{"id":5608,"date":"2022-06-22T16:36:50","date_gmt":"2022-06-22T07:36:50","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5608"},"modified":"2022-06-22T18:05:54","modified_gmt":"2022-06-22T09:05:54","slug":"junit5-%eb%8b%a8%ec%9c%84-%ed%85%8c%ec%8a%a4%ed%8a%b8unit-test","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5608","title":{"rendered":"JUnit5 \ub2e8\uc704 \ud14c\uc2a4\ud2b8(Unit Test)"},"content":{"rendered":"<h1>JUnit5 \ub2e8\uc704 \ud14c\uc2a4\ud2b8(Unit Test)<\/h1>\n<p>Mock(\ubaa8\uc870\ud488) \uc744 \uc774\uc6a9\ud55c \ub2e8\uc704 \ud14c\uc2a4\ud2b8 \ubc29\ubc95\uc744 \uc815\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n<h2>build.gradle<\/h2>\n<pre><code class=\"language-gradle\">dependencies {\n    \/\/ Spring Boot 2.2 \uc774\uc0c1\uc778 \uacbd\uc6b0 JUnit5 \uac00 \ucd94\uac00\ub41c\ub2e4.\n    testImplementation &#039;org.springframework.boot:spring-boot-starter-test&#039;\n}\n\ntest {\n    useJUnitPlatform()\n}<\/code><\/pre>\n<h2>Repository<\/h2>\n<p><code>@SpringBootTest<\/code> \ub97c \ubd99\uc5ec\uc90c\uc73c\ub85c \ud574\uc11c,<br \/>\n\ud14c\uc2a4\ud2b8\uc6a9 \ub370\uc774\ud0c0\ubca0\uc774\uc2a4\uc5d0 \uc811\uc18d\ud574\uc11c,<br \/>\n\ub370\uc774\ud0c0\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<\/p>\n<p>(DB \uac00 \uad6c\ucd95\ub418\uc5b4 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.)<\/p>\n<pre><code class=\"language-java\">@SpringBootTest\nclass LogisticsSongjangLogRepositoryTest {\n\n    @Autowired\n    private LogisticsSongjangLogRepository repository;\n\n    @Test\n    void findTopByOrderserial() {\n        \/\/ given\n\n        \/\/ when\n        List&lt;LogisticsSongjangLog&gt; list = repository.findTopByOrderserial(&quot;22061498879&quot;);\n\n        \/\/ then\n        Assertions.assertEquals(list.size(), 1);\n\n        LogisticsSongjangLog item = list.get(0);\n        Assertions.assertEquals(item.getOrderserial(), &quot;22061498879&quot;);\n    }\n}<\/code><\/pre>\n<h2>Service<\/h2>\n<p>given().willReturn() \ud615\uc2dd\uc73c\ub85c Mock \uc758 \ub9ac\ud134\uac12\uc744 \uc815\ud574 \ub193\uc73c\uba74,<br \/>\nRepository \ub808\uc774\uc5b4 \uc5c6\uc774 Service \ub808\uc774\uc5b4\ub9cc \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-java\">import static org.mockito.BDDMockito.given;\n\n@ExtendWith(MockitoExtension.class)\nclass LogisticsSongjangLogServiceTest {\n\n    @Mock\n    private LogisticsSongjangLogRepository repository;\n\n    @InjectMocks\n    private LogisticsSongjangLogService service;\n\n    @Test\n    void getNotSendSongjangLogLotte() {\n        \/\/ given\n        given(repository.GetNotSendSongjangLogLotte()).willReturn(new ArrayList&lt;&gt;());\n\n        \/\/ when\n        List&lt;LogisticsSongjangLogDto&gt; res = service.GetNotSendSongjangLogLotte();\n\n        \/\/ then\n        Assertions.assertNotNull(res);\n    }\n\n    @Test\n    void setIsuploadedToY() {\n        \/\/ given\n        List&lt;LogisticsSongjangLog&gt; list = new ArrayList&lt;&gt;();\n        list.add(new LogisticsSongjangLog());\n        given(repository.findTopByOrderserial(any())).willReturn(list);\n\n        \/\/ when\n        boolean res = service.setIsuploadedToY(&quot;1111&quot;);\n\n        \/\/ then\n        Assertions.assertTrue(res);\n    }\n}<\/code><\/pre>\n<h2>Controller<\/h2>\n<pre><code class=\"language-java\">@WebMvcTest(LogisticsSongjangLogController.class)\nclass LogisticsSongjangLogControllerTest {\n\n    @MockBean\n    private LogisticsSongjangLogService service;\n\n    @MockBean\n    private LotteApiService apiService;\n\n    @Autowired\n    private MockMvc mockMvc;\n\n    @Test\n    void sendSongjangLog() throws Exception {\n        \/\/ given\n        given(service.GetNotSendSongjangLogLotte()).willReturn(new ArrayList&lt;&gt;());\n        given(apiService.sendSongjangLog(any())).willReturn(true);\n\n        \/\/ when\n        MvcResult result = mockMvc.perform(MockMvcRequestBuilders\n                .get(&quot;\/v1\/lotte\/sendsongjanglog\/&quot;)\n                \/\/ .param(&quot;productId&quot;, productId)\n                .contentType(MediaType.APPLICATION_JSON)\n                .accept(MediaType.APPLICATION_JSON))\n                .andReturn();\n\n        \/\/ then\n        Assertions.assertEquals(HttpStatus.OK.value(), result.getResponse().getStatus(), &quot;Incorrect Response Status&quot;);\n        System.out.println(result.getResponse().getContentAsString());\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>JUnit5 \ub2e8\uc704 \ud14c\uc2a4\ud2b8(Unit Test) Mock(\ubaa8\uc870\ud488) \uc744 \uc774\uc6a9\ud55c \ub2e8\uc704 \ud14c\uc2a4\ud2b8 \ubc29\ubc95\uc744 \uc815\ub9ac\ud569\ub2c8\ub2e4. build.gradle dependencies { \/\/ Spring Boot 2.2 \uc774\uc0c1\uc778 \uacbd\uc6b0 JUnit5 \uac00 \ucd94\uac00\ub41c\ub2e4. testImplementation &#039;org.springframework.boot:spring-boot-starter-test&#039; } test { useJUnitPlatform() } Repository @SpringBootTest \ub97c \ubd99\uc5ec\uc90c\uc73c\ub85c \ud574\uc11c, \ud14c\uc2a4\ud2b8\uc6a9 \ub370\uc774\ud0c0\ubca0\uc774\uc2a4\uc5d0 \uc811\uc18d\ud574\uc11c, \ub370\uc774\ud0c0\ub97c \uac00\uc838\uc635\ub2c8\ub2e4. (DB \uac00 \uad6c\ucd95\ub418\uc5b4 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.) @SpringBootTest class LogisticsSongjangLogRepositoryTest { @Autowired private LogisticsSongjangLogRepository repository; @Test void\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5608\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-5608","post","type-post","status-publish","format-standard","hentry","category-spring-boot-2-5"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5608"}],"version-history":[{"count":4,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5608\/revisions"}],"predecessor-version":[{"id":5612,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5608\/revisions\/5612"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}