티스토리 뷰

웹 애플리케이션에서 컨트롤러를 테스트할 때, 서블릿 컨테이너를 모킹하기 위해서는 @WebMvcTest를 사용하거나 @AutoConfigureMockMvc를 사용하게 되는데 이 어노테이션들에 대해 알아보겠습니다.

@WebMvcTest

일반적으로 사용하는 MVC 테스트용 어노테이션입니다. 해당 어노테이션을 명시하고 아래와 같이 MockMvc@Autowired하면 해당 객체를 통해 MVC테스트가 가능합니다.

image

이 어노테이션을 사용하면 MVC 관련 설정인 @Controller, @ControllerAdvice, @JsonComponent와 Filter, WebMvcConfigurer, HandlerMethodArgumentResolver만 로드되기 때문에, 실제 구동되는 애플리케이션과 똑같이 컨텍스트를 로드하는 @SpringBootTest 어노테이션보다 가볍게 테스트 할 수 있습니다.

또한 @Service나 @Repository가 붙은 객체는 테스트 대상이 아닌 것으로 처리되기 때문에 생성되지 않습니다.

 

@AutoConfigureMockMvc

@WebMvcTest 와 비슷하게 사용할 수 있는 어노테이션이지만 @WebMvcTest와 다르게 컨트롤러 뿐만 아니라 테스트 대상이 아닌 @Service나 @Repository가 붙은 객체 모두 메모리에 올려 테스트가 가능합니다. @AutoConfigureMockMvc@SpringBootTest와 같이 사용 가능합니다.


여기서 드는 의문점은 @AutoConfigureMockMvc과 @SpringBootTest는 왜 같이 사용해야 할까요?

그 이유는 @SpringBootTest가 MockMvc 객체를 생성하지 못하기 때문에 @AutoConfigureMockMvc를 이용하여 MockMvc 객체를 사용할 수 있도록 하기 때문 입니다.

참고

| @WebMvcTest는 @SpringBootTest와 같이 사용될 수 없습니다. 왜냐하면 각자 서로의 MockMvc를 모킹하기 때문에 충돌이 발생하기 때문입니다.

https://www.baeldung.com/spring-boot-testing

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함