반응형
1. 문제
JUnit에서 @DataJpaTest를 사용해서 Repository를 테스트하는 경우 아래와 같이 JPAQueryFactory Bean을 찾을 수 없다는 에러가 발생할 수 있다.
2. 원인
@DataJpaTest를 사용하는 경우, 별도의 스프링 bean을 등록하지 않고 Repository만 테스트한다.
따라서 스프링 bean인 JPAQueryFactory를 @Autowired로 선언해 놓았을경우 inject 하지 못해 에러가 발생하게 된다.
변경전 CustomImpl 클래스는 아래와 같다.
public class MissionRepositoryCustomImpl extends QuerydslRepositorySupport implements MissionRepositoryCustom {
@Autowired
private JPAQueryFactory queryFactory;
public MissionRepositoryCustomImpl(JPAQueryFactory jpaQueryFactory){
super(Mission.class);
this.queryFactory = jpaQueryFactory;
}
}
3. 해결
아래와 같이 EntitiyManager를 @Autowired로 inject하고, 생성자에서 직접 JPAQueryFactory를 주입하면 해결된다.
public class MissionRepositoryCustomImpl extends QuerydslRepositorySupport implements MissionRepositoryCustom {
@Autowired
pirvate EntityManager em;
private JPAQueryFactory queryFactory;
public MissionRepositoryCustomImpl(){
super(Mission.class);
this.queryFactory = new JPAQueryFactory(em);
}
}
참고 : https://www.inflearn.com/questions/23063
추천서적
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
반응형
'ERROR' 카테고리의 다른 글
[ERROR] nginx 403 forbidden centos7 (0) | 2020.09.15 |
---|---|
[ERROR] Failed to start The nginx HTTP and reverse proxy server (0) | 2020.09.15 |
[ERROR] JPA TransientPropertyValueException: object references an unsaved transient instance (0) | 2020.09.15 |
[ERROR] IntelliJ JUnit Cannot resolve symbol (0) | 2020.09.15 |
[ERROR] AmazonCloudFormationException: Stack for i-XXX does not exist (0) | 2020.09.15 |