JPQL 의 동적쿼리를 QueryDsl로 마이그레이션 하기 위해 QueryDsl 그래들 설정을 하고 테스트 코드를 돌려보니
No qualifying bean of type 'com.querydsl.jpa.impl.JPAQueryFactory' available: expected at least 1 bean which qualifies as autowire candidate
와 같은 오류가 났습니다 검색을 해보니
@DataJpaTest의 어노테이션은 스프링이 관리하는
모든 빈을 가져오는 것이 아닌, 엔티티와 entityManager 정도만 등록해주기 때문에
JPAQueryFactory 빈은 인식하지 못하게 되는 것이라고 합니다.
그래서 해결 방법으론 QueryDslConfig 클래스를 import 해주어야 합니다.
@RequiredArgsConstructor
@Configuration
public class QueryDSLConfig {
@PersistenceContext
private final EntityManager em;
@Bean
public JPAQueryFactory queryFactory(){
return new JPAQueryFactory(em);
}
}
테스트 코드 클래스에 @Import(QueryDSLConfig.class) 어노테이션 추가로 해결 완료
@ActiveProfiles("test")
@DataJpaTest //DB관련된 BEAN이 올라온다
@Import(QueryDSLConfig.class)
public class TransactionRepositoryImplTest extends DummyObject {