@WebMvcTest로 테스트를 진행하던 도중 위와 같은 에러가 발생했다. 핵심 내용은 JPA metamodel must not be empty! 로, JPA 메타 모델은 비워둘 수 없다는 메시지다.
@WebMvcTest는 JPA 생성과 관련된 기능이 전혀 존재하지 않는 테스트 어노테이션이다.
JPA Auditing 기능을 사용할때 아래와 같이 @SpringBootApplication에 @EnableJPaAuditing을 추가하여 사용하고 있기 때문에 발생하는 에러다.
해결방법
테스트 코드 클래스단에 @MockBean(JpaMetamodelMappingContext.class)을 추가한다.
모든 테스트 클래스마다 입력해줘야 한다는 단점이 존재한다.
@ExtendWith({SpringExtension.class, RestDocumentationExtension.class}) @WebMvcTest(UserApiController.class)
@ActiveProfiles("local")
@MockBean(JpaMetamodelMappingContext.class)
class UserApiControllerTest { ... }
- @EnableJpaAuditing 을 따로 분리한다.
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfig { }