🚨오류
Caused by:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'jpaAuditingHandler':
Cannot resolve reference to bean 'jpaMappingContext' while setting constructor argument;
nested exception is 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!
✍️원인
jpaAuditing 기능을 사용하기 위해 @EnableJPaAuditing을 Application에 선언
Spring 테스트에서 컨테이너를 사용하는 경우, 기본 애플리케이션 클래스(@SpringBootApplication이 붙은 클래스)를 항상 로드
Application 클래스에 @EnableJpaAuditing이 설정되어 있어서, 모든 테스트에서 JPA 관련 빈(EntityManager, JpaRepository 등)이 필요하게 됨
통합 테스트(@SpringBootTest)는 JPA 관련 빈을 전부 로드하므로 문제 없지만, @WebMvcTest는 컨트롤러 관련 빈만 로드하므로 JPA 빈이 없어서 오류 발생함
✅해결
1. @MokitoBean 추가
@Test
@DisplayName("회원가입 성공 테스트")
@MockitoBean(JpaMetamodelMappingContext.class)
void createUserSuccessTest() throws Exception {}
각각의 Test에 @MokitoBean을 선언해야하는 번거러움 존재
2. JpaAuditingConfig 파일 분리
@EnableJpaAuditing
@Configuration
public class JpaAuditingConfig {
}
📚참고
https://velog.io/@suujeen/Error-creating-bean-with-name-jpaAuditingHandler
Error creating bean with name 'jpaAuditingHandler':
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaAuditingHandler': Cannot resolve reference to bean 'jpaMappingContext' while setting constructor a...
velog.io
'Java > JPA with Error' 카테고리의 다른 글
[해결방법] duplicateKeyException (0) | 2024.08.12 |
---|---|
[해결방법] EmptyResultDataAccessException (0) | 2024.08.11 |
[해결방법] JdbcTypeRecommendationException (0) | 2023.12.25 |
[해결방법] BeanCreationException (0) | 2023.12.25 |
[해결 방법] org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl ... is closed (1) | 2023.10.08 |