개발(합니다)/시나브로(이슈)
[Junit] Spring DataJPATest 슬라이싱 테스트 : .impl.JPAQueryFactory' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
otrodevym
2021. 6. 1. 00:00
반응형
상황
@DataJpaTest(properties = {
"spring.config.location=classpath:application-test.yml"
})
JPA만 테스트 하기 위해서 @DataJPATest를 선언하고
application-test.yml을 바로보도록 설정하고
빈을 찾을 수 없다고 에러가 발생했습니다.
문제 파악
환경설정이 Test로 되어 있고 @DataJPATest는 Spring의 빈이 아닌 JPA단만 테스트 합니다.
test 패키지가 아닌 main 패키지에 있다고 해도 JPAQueryFactory를 찾을 수 없습니다.
해결 방법
- test 패키지 아래에 Test를 위한 TestConfig를 선언
- TestConfig에서 JPAQueryFactory를 주입
- @DataJPATest에서 @Import(TestConfig.class) 선언
TestConfig.java
@TestConfiguration
public class TestConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory queryFactory() {
return new JPAQueryFactory(entityManager);
}
}
AdminInfoTest.java
@DataJpaTest(properties = {
"spring.config.location=classpath:application-test.yml"
})
@Import(TestConfig.class)
@ExtendWith(SpringExtension.class)
@DisplayName("관리자 정보 테스트")
public class AdminInfoTest {
반응형