사이드 프로젝트에서 JUnit 테스트를 진행하던 중
required a bean of type 'com.querydsl.jpa.impl.JPAQueryFactory' that could not be found.
위와 같은 에러가 발생하면서 Querydsl 관련 테스트가 되지 않았습니다.
Querydsl를 이용한 테스트를 진행할 때 Querydsl 관련 설정 파일을 @import 하지 않아 발생한 문제였습니다. JPAQueryFactory를 빈으로 등록하지 않았기 때문에 테스트 실행 시 이를 찾지 못해 에러가 발생한 것입니다.
QuerydslConfig를 테스트 클래스에 import하여 문제를 해결할 수 있었습니다. 아래와 같이 QuerydslConfig를 정의하고, 테스트 클래스에 @Import 어노테이션을 추가하면 에러가 해결됩니다.
@Configuration
class QuerydslConfig(
@PersistenceContext
val entityManager: EntityManager
) {
@Bean
fun jpaQueryFactory(): JPAQueryFactory {
return JPAQueryFactory(entityManager)
}
}
@DataJpaTest
@Import(QuerydslConfig::class)
class MemberTest {
@Autowired
private lateinit var memberRepository: MemberRepository
companion object {
private const val TEST_ADMIN_EMAIL = "admin";
private const val TEST_USER_EMAIL = "test";
}
@Test
fun 사용자_조회() {
Assertions.assertNotNull(memberRepository.findByEmail(TEST_USER_EMAIL))
}
}