@SpringBootTest vs @WebMvcTest

김형준 Kim Hyeong Jun·2023년 3월 4일
0

@SpringBootTest + @AutoConfigureMovcMvc

프로젝트 내부에 있는 스프링 빈을 모두 등록합니다.(테스트가 느림)실제 운영 환경에서 사용되는 클래스들을 통합해서 테스트하는 방식입니다.
따라서 환경과 가장 유사하게 테스트가 가능하며, Service 메서드의 스펙이 변경되어도 Mocking 값을 수정하지 않아도 되기 때문에 변경에 자유롭다는 특징을 가지고 있습니다. 반면 테스트 단위가 커서 디버깅이 까다롭다는 특징도 가지고 있습니다.

@WebMvcTest + @MockBean

컨트롤러의 역할만을 테스트합니다.
Web Layer에 해당하는 빈만 빠르게 생성합니다. 필요한 빈을 직접 채워줘야한다는 번거로움이 있지만, 테스트 속도가 빠르다는 장점이 있습니다.
통합테스트에서 진행이 어려운 경우를 Mock으로 테스트할 수 있지만, Mock 객체를 사용하기 때문에 실제 동작과는 차이가 있습니다. 또한 Mocking 메서드의 변경이 일어나면 수정이 필요합니다.

요약

@SpringBootTest는 테스트 속도는 느리지만, 실제 환경과 가장 유사하게 테스트가 가능한 방식이며, 변경에 자유롭다는 장점을 가지고 있습니다.
@WebMvcTest는 테스트 속도가 빠르고 통합테스트가 어려운 테스트를 개별적으로 진행이 가능합니다. 반면 실제 환경과는 차이가 있고, 필요한 빈을 직접 채워넣어주어야 한다는 번거로움이 존재하며 변경에 자유롭지 못하다는 특징을 가지고 있습니다.


Reference

SpringBoot - @SpringBootTest vs @WebMvcTest
@SpringBootTest, @AutoConfigureMockMvc, 그리고 @WebMvcTest

profile
I want be a developer🙂

0개의 댓글