springboot 테스트 코드 작성법과 TDD

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

Tags

Read Next