⊙ TDD? 단위 테스트 코드?
TDD란?
Test-driven development의 약자로 테스트가 주도하는 소프트웨어 개발 프로세스를 의미한다.
기존에 디자인 - 코드 작성 - 테스트의 순서에서 벗어나 디자인 단계를 미리 정의하여, 테스트 코드를 먼저 작성하는 것부터 시작한다.

- Red: 항상 실패하는 테스트를 먼저 작성한다
- Green: 테스트가 통과하는 프로덕션 코드를 작성한다
- Refactor: 테스트가 통과하면 프로덕션 코드를 리팩토링한다
단위 테스트란?
단위 테스트 코드는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미한다. 그럼 단위 테스트 코드는 왜 필요하며 어떤 이점이 있을까?
- 단위 테스트는 개발단계 초기에 문제를 발견하게 도와준다
- 단위 테스트는 개발자가 나중애 코드를 리팩터링 하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있다(회귀 테스트)
- 단위 테스트는 기능에 대한 불확실성을 감소시킨다
- 단위 테스트는 시스템에 대한 실제 문서를 제공한다. 즉, 단위 테스트 자체가 문서로 사용할 수 있다
이러한 이점들 때문에 서비스 기업에서 특히나 강조를 많이 하며 Back-End 개발자가 익혀야 할 기술이자 습관이다. 자바에서는 JUnit을 사용해보자.
⊙ 실제로 단위 테스트를 진행해보자

- @RestController
RestFul 통신이 용이하게 JSON 반환하는 컨트롤러로 만들어준다.
- @GetMapping
Http Method인 Get의 요청을 받을 수 있는 API를 만들어준다.

- @RunWith(SpringRunner.class)
테스트가 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행시킨다. 여기서는 SpringRunner.class를 이용해 스프링 실행자를 사용한다. 즉, 스프링 부트 테스트와 JUnit 사이에 연결자 역할을 한다.
- @WebMvcTest
여러 스프링 테스트 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션. 선언할 경우 @Controller, @ControllerAdvice는 사용할 수 있지만 @Service, @Component, @Repository는 사용할 수 없다.
- private MockMvc mvc
웹 API를 테스트할 때 사용되며, HTTP GET, POST 등에 대해 API 테스트가 가능하다.

성공적으로 테스트한 것을 알 수 있다!
'Develop > Back-End' 카테고리의 다른 글
[Back-End] Node.js 첫걸음 (0) | 2022.05.12 |
---|---|
[Spring Boot] 단위 테스트 코드를 작성해보자 (2) (0) | 2022.01.03 |
[DialogFlow] What is DialogFlow? (0) | 2021.07.30 |
[Git] Git 벼락치기! - 초심자 가이드 (0) | 2021.07.09 |
[Spring Boot] RESTful Web Service 구축하기 (0) | 2021.06.05 |
댓글