[Spring Boot] 64. 스프링부트 블로그 v3 (RestAPI) (9) 통합테스트 1 - 유형 1. 인증이 필요없는 api 요청
May 12, 2025
1. 통합 테스트의 필요성
2. 통합 테스트
각각의 기능에 대한 통합테스트 코드를 작성할 때 기능은 controller-service-repository를 통해 동작하지만 테스트할 때는 Controller의 메서드만 호출해보면 된다. 따라서 User 테이블의 Controller에 있는 join 메서드를 테스트 해볼 예정이니 UserControllerTest 클래스를 만들면 된다. 따라서 이러한 Test 클래스가 내 프로젝트의 테이블만큼 만들어져야 한다.

@SpringBootTest단위 테스트를 할 때에는 Repository의 메서드를 테스트 해보는 것이었기 때문에 메모리에 EntityManager 같은 DB 관련된 것들만 떠있으면 됐었다. 그러나 통합 테스트를 할 때에는 Controller의 메서드만 호출하지만 결과적으로 기능이 동작하기 위해서는 Controller뿐만 아니라 Service, Repository 전부 Heap 메모리에 떠 있어야 된다. @SpringBootTest 어노테이션은 실제 어플리케이션을 실행할 때와 거의 동일한 환경을 구성할 수 있도록 하며, 이를 통해 Controller, Service, Repository 등의 객체들이 스프링 컨테이너에 의해 생성되고 관리되고 heap 메모리에 올라간다.
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) webEnvironment 를 mock으로 설정하게 되면 내장 톰캣 등 실제 웹 서버를 띄우지 않지만 Spring
MVC의 DispatcherServlet은 사용이 되어 Controller 테스트가 가능하다.
테스트 시 실제 내장 웹 서버를 띄우지 않고 가짜 환경(MOCK)에서 DispatcherServlet을 사용해 웹 요청을 테스트하는 것을 의미한다.


Share article