문제 발견
기존 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