[Spring Boot] @WebMvcTest + Junit5 Error: JPA metamodel must not be empty!

sy·2023년 7월 13일
0

에러 내용

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: JPA metamodel must not be empty!

Caused by: java.lang.IllegalArgumentException: JPA metamodel must not be empty!

원인

@WebMvcTest 사용해서 Controller 테스트 코드를 작성중에 위와 같은 에러가 났다. 이유는 SpringbootApplication에 있는 @EnableJpaAuditing 때문.

테스트 환경에서 @WebMvcTest를 사용하면, 웹 계층만 로드하므로 JPA와 같은 데이터 계층은 로드되지 않는다. (컨트롤러와 관련된 설정만 로드)

@EnableJpaAuditing 어노테이션은 JPA가 제공하는 Auditing 기능을 활성화하는데 사용된다. (엔티티가 생성되거나 변경될 때 시간을 자동 기록)

해결 방법

1. @EnableJpaAuditing을 별도의 설정 파일로 분리

@Configuration
@EnableJpaAuditing
public class JpaAuditingConfiguration {
}

2. test 클래스에 @MockBean(JpaMetamodelMappingContext.class), @AutoConfigureWebMvc 추가

@WebMvcTest(MemberController.class)
@MockBean(JpaMetamodelMappingContext.class)
@AutoConfigureWebMvc
class MemberControllerTest {
}

0개의 댓글