[JPA] QueryDsl 테스트 코드 import 문제 해결

yookyungmin·2023년 9월 3일
0

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 {

0개의 댓글