문제 발견

기존 QueryDsl 없이 NativeQuery 로 작성한 리포지토리 메서드를 리팩토링 하다가 발생한 에러이다.

@SpringBootTest 는 스프링을 띄워서 의존성 주입을 다 받기 때문에 상관없지만

리포지토리 테스트는 대부분 @DataJpaTest 를 사용하기 때문에 QueryDsl 관련 빈을 주입받지 못해 발생한 에러였다.

 


문제 해결

아래 두가지를 순서대로 따라하니 문제가 해결되었다.

 

1. QueryDslConfig 작성

QueryDslConfig

@Configuration
public class QueryDslConfig {

    @PersistenceContext
    public EntityManager em;

    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(em);
    }
}

 

2. Test 에 @Import 추가

Test

@DataJpaTest
@Import(QueryDslConfig.class)
class ProductRepositoryTest {
...
}

 

 

참고자료)

 

No qualifying bean of type 'com.querydsl.jpa.impl.JPAQueryFactory' available: expected at least 1 bean which qualifies as autowi

JPA Config 파일 추가test에 @Import 추가

velog.io

 

 

@DataJpaTest - 인프런 | 질문 & 답변

QueryDsl 강의 잘듣고 있습니다!QueryDsl을 사용하면 @DataJpaTest를 사용하지 못하나요?JPAQueryFactory에 대해서 NoSuchBeanDefinitionException이 발생하는데 따로 주입하는 방법을 모르겠습니다ㅠㅠ - 질문 & 답변

www.inflearn.com

 

+ Recent posts