테스트 주도 개발(TDD)은 코드를 작성하기 전에 테스트 코드를 작성하는것을 말하는데 TDD의 단계는 크게 3개로 볼 수 있습니다.
테스트 작성: 구현할 기능에 대한 테스트를 작성합니다.
코드 작성: 테스트를 통과하도록 최소한의 코드를 작성합니다.
리팩토링: 코드를 정리하고 개선합니다.
MockMVC는 무엇일까요?
MockMVC는 Spring MVC 애플리케이션을 테스트할 때 사용하는 도구입니다. 이를 통해 실제 웹 서버를 실행하지 않고도 Controller 계층을 테스트할 수 있습니다. 직접 런타임시점까지 코드를 컴파일하지 않아도 직접 가상 API를 요청해볼 수 있습니다.
MockMVC에 대한 간단한 예제인데요, 위 테스트 클래스는 @WebMvcTest를 사용하여 Spring MVC 애플리케이션의 특정 컨트롤러를 테스트합니다. MockMVC를 통해 PATH GET 요청을 보내고, 응답 상태가 200 OK인지와 응답 내용이 맞는지 판단합니다.
perform 메서드는 HTTP 요청을 시뮬레이션하고, andExpect 메서드는 그에 따른 응답을 검증할 수 있게 됩니다. 보통 given-when-then 패턴을 많이 사용하는것으로 알고 있고 저도 실제로 대외 프로젝트를 진행하면서 given-when-then 패턴을 사용하여 해당 TDD 단위 테스트를 진행한 경험을 가지고 있습니다.
그 만큼 단위테스트는 중요한 부분이고 추후 실무에서 개발기간을 단축시킬 수 있는 큰 요소라고 생각을 합니다.