Controller단 Test Annotations

murkgom·2023년 2월 1일
0

Controller 테스트 코드 작성시 흔히 보이는 Annotation들을 살펴보자

@ExtendWith

ExtendWith(SpringExtension.class) vs ExtendWith(MockitoExtension.class)

간단히 생각하면

  • spring test 관련 기능이 필요하다면 SpringExtension(ex: @MockBean)
  • mockito 관련 기능이 필요하다면 MockitoExtension(ex: @Mock, @InjectMocks)

@AutoConfigureMockMvc

controller단에서 요청 보낼 때 사용하는 MockMvc를 DI할 때 사용

@SpringBootTest

Spring에 선언된 모든 Bean을 DI
@ExtendWith(SpringExtension.class) 포함

  • 실제 구동과 동일하게 테스트 가능
  • 통합 테스트에 용이
  • But, 느림

@WebMvcTest

Controller단 테스트에 필요한 Bean들 위주로 DI
@AutoConfigureMockMvc 및 @ExtendWith(SpringExtension.class) 포함

  • @WebMvcTest(SomethingController.class) 같이 특정 Controller 관련 Bean만 DI 가능
  • @SpringBootTest보다 빠름

결론

빠르고 의존성이 낮아야 하는 단위 테스트, 그 중 Controller단의 단위 테스트에선 @WebMvcTest를 사용하자

0개의 댓글