DCI ํŒจํ„ด์ด๋ž€?


DCI ํŒจํ„ด์ด๋ž€ Describe Context It ์˜ ์•ฝ์ž๋กœ ์ผ์ข…์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ํŒจํ„ด์ด๋‹ค.

Given When Then ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด์ ์ด ์กด์žฌํ•œ๋‹ค.

  • Describe ์„ค๋ช…ํ•  ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์„ ๋ช…์‹œํ•œ๋‹ค.
    • e.g. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์˜ ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ๋ช…
  • Context ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์ด ๋†“์ธ ์ƒํ™ฉ์„ ์„ค๋ช…ํ•œ๋‹ค.
    • e.g. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ
  • It ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์˜ ํ–‰๋™์„ ์„ค๋ช…ํ•œ๋‹ค.
    • e.g. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜๊ฐ’

DCI ํŒจํ„ด์˜ ์žฅ์ 

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ฝ์„ ๋•Œ ๋ฒ”์œ„๋งŒ ์‹ ๊ฒฝ์“ฐ๋ฉด ๋œ๋‹ค.
  • ์ž‘์„ฑํ•˜์ง€ ๋ชปํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ฐพ๊ธฐ ์‰ฝ๋‹ค.

JUnit5 @Nested ํ™œ์šฉ


@Nested
class changeSlackUrl_๋ฉ”์†Œ๋“œ๋Š” {
 
    @Nested
    class ์กด์žฌํ•˜๋Š”_Job์„_์ž…๋ ฅ_๋ฐ›๋Š”_๊ฒฝ์šฐ {
 
        private static final String SLACK_URL = "http://slackurl.com";
        private static final String NEW_SLACK_URL = "https://newslackurl.com";
 
        private final Host host = repository.save(Host_์ƒ์„ฑ("1234", 1234L));
        private final Space space = repository.save(Space_์ƒ์„ฑ(host, "์ž ์‹ค"));
        private final Job job = repository.save(Job_์ƒ์„ฑ(space, "ํ†ฑ์˜ค๋ธŒ์Šค์œ™๋ฐฉ", SLACK_URL));
        private final SlackUrlChangeRequest request = new SlackUrlChangeRequest(NEW_SLACK_URL);
 
        @Test
        void Slack_Url์„_์ˆ˜์ •ํ•œ๋‹ค() {
            jobService.changeSlackUrl(host.getId(), job.getId(), request);
            Job actual = repository.getById(Job.class, job.getId());
 
            assertThat(actual.getSlackUrl()).isEqualTo(NEW_SLACK_URL);
        }
    }
}

JUnit5 ์˜ @Nested ๋ฅผ ํ™œ์šฉํ•ด Java ์—์„œ๋„ ์ด๋Ÿฐ ๊ณ„์ธตํ˜• ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณ„์ธตํ˜•์œผ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์œ„์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” ๋ˆ„๋ฝ๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ƒ๋‹นํžˆ ํŽธํ•˜๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋„ ์‹คํŒจํ•˜๋Š” ์ผ€์ด์Šค๋“ฑ์„ ์ฐพ์„ ๋•Œ ํ›จ์”ฌ ์ˆ˜์›”ํ•˜๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

References