TDD(테스트 주도 개발)
TDD란?
요구사항을 검증하는 자동화된 테스트 케이스를 작성한 이후 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링한다
(테스트 코드 작성 -> 구현 코드 작성 -> 리팩토링 단계)
TDD의 장점
- 시스템 결함 방지
- 짧은 개발 주기를 통해 고객의 요구사항을 빠르게 수용
- 테스트 문서의 대체 가능
- 리팩토링 용이
- 좋은 설계를 유도
F.I.R.S.T 단위 테스트 원칙
Fast - 테스트는 빨라야한다.
Isolated - 다른 테스트에 종속적인 테스트는 절대로 작성하지 않는다.
Repeatable - 테스트는 실행할떄마다 같은 결과를 만들어야한다.
Self-validating - 스스로 검증 가능해야 한다.
Timely - 단위테스트를 뒤로 미루지 말고 적시에 작성해야된다.
Spring Boot 테스트 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TermControllerTest {
Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
TermController termController;
private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(termController).build();
}
@Test
public void termTest() throws Exception {
MvcResult result = null;
result = mockMvc.perform(get("/terms/1234").andExpect(status().isOk()).andReturn();
logger.debug("termTestCall Result : {}", result.getResponse().getContentAsString());
// seq 값에 문자 입력시 실패 확인
mockMvc.perform(get("/terms/테스트").andExpect(status().isNotFound());
}
}
|
cs |
1) @RunWith(SpringJUnit4ClassRunner.class) - Spring ApplicationContext를 로딩하고, @Autowired로 Bean을 이용할 수 있게 해준다.
2) @SpringBootTest - 통합 테스트를 제공하는 기본적인 스프링 부트 테스트 어노테이션
3) MockMvcBuilders.standaloneSetup(termController).build(); - termController를 mockMvc객체로 등록
3) mockMvc.perform(get("/terms/1234") .. - /v1/dictionary/terms/1234로 GET 통신
4) andExpect(status().isOk()) - 200 상태인지 확인
'기타' 카테고리의 다른 글
Template Engine (0) | 2020.08.15 |
---|---|
Database CRUD 타입 및 사용 방법 (0) | 2020.08.09 |
url 생성 규칙 & RESTful API (0) | 2020.08.08 |
스터디 객체지향 이론 (0) | 2020.08.03 |
스터디 DDD (0) | 2020.08.03 |
Comment