Spring

@SpringBootTest / @WebMvcTest

신동편 2023. 7. 25. 13:24
728x90

@SpringBootTest와 @WebMvcTest는 스프링 부트 프레임워크에서 테스트를 작성할 때 사용되는 어노테이션이다. 둘 다 테스트를 쉽게 작성하고 테스트할 때 필요한 빈(Bean)들을 자동으로 로드하는 데 도움이 되지만, 사용하는 방식과 대상이 다르다.

 


@SpringBootTest

 

@SpringBootTest 어노테이션은 애플리케이션의 전체 컨텍스트를 로드하며, 통합 테스트를 작성할 때 사용된다. 따라서 모든 빈들이 로드되고 설정 파일들이 활성화된다.

 

데이터베이스나 메시징 시스템과 상호작용하는 경우, 실제로 실행되는 애플리케이션과 비슷한 환경에서 테스트를 수행할 수 있다.

 

애플리케이션의 여러 레이어를 테스트할 수 있으므로, 시스템의 통합성과 동작을 더 정확하게 테스트할 수 있다. 하지만 테스트가 느려질 수 있으며, 단위 테스트와 비교하면 더 많은 설정과 리소스가 필요하다.

 

@SpringBootTest
class MyIntegrationTest {
    // 모든 빈들이 로드되고 설정이 활성화됨
    // 통합 테스트 작성 가능
}

 


@WebMvcTest

 

@WebMvcTest 어노테이션은 웹 계층(Web layer) 테스트를 위해 사용된다. 주로 컨트롤러(Controller) 테스트에 사용된다. 웹 관련 빈들만 로드하여 가볍고 빠른 테스트를 가능하게 한다. 다른 컴포넌트들은 로드되지 않는다.

 

일반적으로 컨트롤러와 컨트롤러와 상호작용하는 서비스(Service) 빈들을 테스트할 때 사용된다. HTTP 요청과 응답을 테스트하여 웹 애플리케이션의 동작을 단위 테스트하는 데 적합하다.

 

@WebMvcTest(MyController.class)
class MyControllerTest {
    // MyController와 관련된 빈들만 로드됨
    // 가볍고 빠른 웹 계층 테스트 작성 가능
}

 


 

728x90