Spring Boot/testing

@WebMvcTest - @EnableJpaAuditing 주의사항

최-코드 2024. 12. 4. 12:16

@WebMvcTest를 사용해도 @SpringBootApplication을 통해 애플리케이션 컨텍스트를 설정한다. 하지만 @SpringBootTest와 다르게 웹 계층 관련 빈들만 등록한다.

 

따라서 만약 @EnableJpaAuditing이 @SpringBootApplication과 함께 붙어있으면 @WebMvcTest 시에 AuditingHandler 관련 빈들을 애플리케이션 컨텍스트에 등록하며, JPA 메타모델을 필요로 하게 된다.

 

하지만 @WebMvcTest는 jpa 엔티티나 repository 관련 빈들은 등록하지 않으므로 jpa 메타 모델이 비어있게 되서 오류가 발생한다.

 

이를 해결하기 위해선 @WebMvcTest가 빈으로 로드하지 않는 @Configuration 클래스 파일을 따로 만들어서 @EnableJpaAuditing 애너테이션을 @SpringBootApplication에서 떼줘야 한다. 

 

@Configuration
@EnableJpaAuditing
public class JpaConfig {
}