Spring Boot 테스트
Spring Boot 테스트: @SpringBootTest, @WebMvcTest, @DataJpaTest, MockMvc, TestRestTemplate, 테스트 슬라이스
1통합 테스트에서 Spring Boot의 전체 컨텍스트를 로드하려면 어떤 어노테이션을 사용합니까?
통합 테스트에서 Spring Boot의 전체 컨텍스트를 로드하려면 어떤 어노테이션을 사용합니까?
답변
@SpringBootTest는 모든 bean과 자동 구성을 포함하여 애플리케이션의 전체 컨텍스트를 로드합니다. 이 어노테이션은 애플리케이션 전체가 필요한 통합 테스트에 사용됩니다. @WebMvcTest와 @DataJpaTest는 컨텍스트의 일부만 로드하며(테스트 슬라이싱), @ContextConfiguration은 컨텍스트를 수동으로 구성하기 위한 더 낮은 수준의 어노테이션입니다(더 복잡함).
2Spring Boot에서 테스트 슬라이싱(test slicing)이란 무엇입니까?
Spring Boot에서 테스트 슬라이싱(test slicing)이란 무엇입니까?
답변
테스트 슬라이싱은 테스트 속도를 높이기 위해 Spring 컨텍스트의 특정 부분만 로드하는 것을 의미합니다. 예를 들어 @WebMvcTest는 web 컴포넌트(controller, filter)만 로드하고, @DataJpaTest는 JPA repository만 로드합니다. 이를 통해 시작 시간이 줄어들고 불필요한 bean 로딩을 피해 테스트 성능이 향상됩니다.
3Spring MVC controller만 테스트하려면 어떤 어노테이션을 사용합니까?
Spring MVC controller만 테스트하려면 어떤 어노테이션을 사용합니까?
답변
@WebMvcTest는 Spring MVC controller를 테스트하기 위해 특별히 설계되었습니다. 이 어노테이션은 web 컴포넌트(controller, @ControllerAdvice, filter, interceptor)만 로드하고 MockMvc를 자동으로 구성합니다. @SpringBootTest는 전체 컨텍스트를 로드하며(단일 controller 테스트에는 불필요), @DataJpaTest는 repository용, @RestClientTest는 HTTP 클라이언트(RestTemplate, WebClient) 테스트용입니다.
Spring Boot Test에서 @MockBean 어노테이션의 목적은 무엇입니까?
@WebMvcTest를 사용한 테스트에서 HTTP 요청을 시뮬레이션하려면 어떤 객체를 사용합니까?
+27 면접 질문