@SpringBootTest + @AutoConfigureMockMvc
특징
- 프로젝트 내부 스프링 빈을 모두 등록하여 테스트에 필요한 의존성 추가
- 실제 운영 환경에서 사용될 클래스를 통합 테스트
- 단위 테스트와 같은 기능 테스트가 아닌 전체적인 흐름과 동작을 검증
장점
- 모든 스프링 빈을 등록하기에 운영환경과 가장 유사한 테스트 가능
단점
- 테스트 단위가 크기에 디버깅 쉽지 않음
- 비교적 로딩시간이 오래 걸림
@WebMvcTest
특징
- MVC를 위한 테스트, Controller가 예상대로 동작하는지 테스트하기 위함
- Web Layer만 로드
- 해당 어노테이션 사용 시 다음과 같은 항목만 제한하여 스캔하기에 빠르고 가벼운 테스트 가능

- Security, Filter, Interceptor, request/response Handling, Controller의 항목들만 스캔하도록 제한하며, @Component는 대상에서 제외
장점
- WebApplication과 관련된 Bean들만 등록하기 때문에 @SpringBootTest보다 빠름
- 통합테스트를 진행하기 어려운 테스트 개별 진행 가
단점
- Mock을 기반으로 테스트 하기 때문에, 실제 환경에서는 예상 밖의 동작오류가 발생할 수 있다.
추가질문
@AutoConfigureMockMvc은 언제 사용하는가?
- Mock Test 시 필요한 의존성 제공
- @WebMvcTest가 아닌 @SpringBootTest에서도 Mock 테스트를 가능하게 해줌
- MockMvc 객체를 통한 실제 컨테이너가 아닌 로직상 테스트 가능
Mock Test 시 필요한 의존성 제공 @WebMvcTest가 아닌 @SpringBootTest에서도 Mock 테스트를 가능하게 해줌 MockMvc 객체를 통한 실제 컨테이너가 아닌 로직상 테스트 가능
@ActiveProfiles는 언제 사용하는가?
- 프로파일 전략을 사용 중이라면 원하는 프로파일 환경 값 설정 가능
@ActiveProfiles("test")
Mock?
- 테스트 작성을 위한 환경 구축이 어렵거나, 특정 경우 및 순간에 의존적인 경우 테스트 작성시간을 단축하기 위해 사용
- 실제를 모방한 가짜 객체
- 실제 객체로 동작 시 Mock 객체와 다르게 동작할 수 있음
MockBean?
- Mock 객체를 빈 등록
- Spring의 ApplicationContext는 Mock 객체를 빈으로 등록하며, 이미 동일한 타입 동일 객체가 빈으로 등록 시 해당 빈은 선언한 @MockBean으로 대체
참고자료
46. Testing
A Spring Boot application is a Spring ApplicationContext, so nothing very special has to be done to test it beyond what you would normally do with a vanilla Spring context. By default, @SpringBootTest will not start a server. You can use the webEnvironment
docs.spring.io
[스프링부트 (9)] SpringBoot Test(2) - @SpringBootTest로 통합테스트 하기 (tistory.com)
[스프링부트 (9)] SpringBoot Test(2) - @SpringBootTest로 통합테스트 하기
[스프링부트 (9)] SpringBoot Test(2) - @SpringBootTest로 통합테스트 하기 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 부트 통합 테스트 하기 (@SpringBootTest)] 입니다. : ) 0. 들어가기 앞서 이번 포스
goddaehee.tistory.com
@SpringBootTest, @AutoConfogureMockMvc, 그리고 @WebMvcTest (tistory.com)
@SpringBootTest, @AutoConfogureMockMvc, 그리고 @WebMvcTest
JUnit과 단위테스트 SpringBoot에서 JUnit를 사용하여 테스트 코드를 작성할때, 대표적으로 @SpringBootTest와 @WebMvcTest를 사용하는 경우가 많다. 처음에는 둘의 차이를 간단하게 @SpringBootTest는 모든 빈을
astrid-dm.tistory.com
[Spring Boot] @SpringBootTest와 @WebMvcTest (tistory.com)
[Spring Boot] @SpringBootTest와 @WebMvcTest
SpringBoot에서 JUnit5을 사용하여 테스트 코드를 작성할 때 @SpringBootTest 어노테이션을 자주 쓰게 되는데, 상황에 따라서는 @WebMvcTest를 쓰는게 좋을 때도 있다. + 테스트를 쉽게 하기 위해서 요청을 수
wiselog.tistory.com
'F.W > Spring & Spring Boot' 카테고리의 다른 글
스프링 REST 클라이언트 (1) | 2023.05.12 |
---|---|
스프링 컨테이너 (0) | 2023.05.11 |