-
[spring] TDD (테스트 주도 개발) 방법Server/Spring 2020. 4. 19. 18:14
TDD ? ( Test Driven Development )
선 테스트코드 작성 후 실제 코드 개발
구현 -> 테스트 -> 리펙토링
Development
-목표주도개발
-사용자 중심 개발
-인터페이스 중심 개발목표?
-올바르게 작동 -test
-깔끔한 코드 - 이때 refactoringTDD 3가지 cycle
Red - 실패
Green - 성공
Refactoring test 코드 리팩터링.TDD 만드는 방법
test파일 만들고싶은 파일에서-goto-test
예시
Controller TDD
HelloWorldController.java
@RestController public class HelloWorldController { @GetMapping("/api/helloworld") public String helloWord(){ return "HelloWorld"; } }
ctrl+shitft + R 로 테스트 클래스 생성
HelloWorldControllerTest.java
package com.devaon.managecontact.controller; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; @SpringBootTest class HelloWorldControllerTest { @Autowired private HelloWorldController helloWorldController; //모의 http request, response 만들어 테스트 진행하도록 해줌 private MockMvc mockMvc; //단지 메소드 호출 테스트 @Test public void helloWorld() { System.out.println(helloWorldController.helloWord()); assertThat(helloWorldController.helloWord()).isEqualTo("HelloWorld"); } //실제 http 테스트 @Test public void mockMvcHelloWorld() throws Exception { //MockMvc setting mockMvc = MockMvcBuilders.standaloneSetup(helloWorldController).build(); //실제 동작하도록 요청 mockMvc.perform( //get 메소드로 요청 MockMvcRequestBuilders.get("/api/helloworld") ).andDo(MockMvcResultHandlers.print()) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.content().string("HelloWorld")); } }
*MockMvc *
http request, response 만들어 테스트 진행하도록 해준다
MockMvc 세팅
mockMvc = MockMvcBuilders.standaloneSetup(helloWorldController).build();
실제 동작하도록 요청
mockMvc.perform
get/post/put/patch/delete 메소드로 요청
MockMvcRequestBuilders.get("api/helloworld")
Request와 Response에 대해 구체적인 정보를 노출
.andDo(MockMvcResultHandler.print)
자동화된 결과 체크
andExpect(MockMvcResultMatchers )
status가 200 성공했는지 확인
.andExpect(MockMvcResultMatchers.status().isOk())
response의 body 값이 HelloWorld인지 확인
.andExpect(MockMvcResultMatchers.content().string("HelloWorld"))
TDD 예시 프로젝트
👇👇👇
[spring boot] 연락처 관리 프로젝트 (+TDD)
https://aonee.tistory.com/64?category=369754
✔ 프로젝트 전체 코드 ( 깃허브 )
👉👉👉 https://github.com/devAon/SpringBoot-Manage-Contact
반응형'Server > Spring' 카테고리의 다른 글
[spring boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스-1 (0) 2020.05.03 [spring boot] 연락처 관리 프로젝트 (+TDD) (0) 2020.04.26 [Spring] jpa, Hibernate, mybatis 란? 그리고 SQL Mapper와 ORM (0) 2020.04.19 [Spring] 설정 및 구현 - 생명주기, MVC (0) 2020.04.12 [Spring] 스프링 프레임워크란? DI 의존주입이란? 의존주입방법 (0) 2020.04.01