[Error] JUnit 테스트 중 Querydsl 관련 에러 해결 방법

개발자 P군·2024년 10월 9일
0
post-custom-banner

사이드 프로젝트에서 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 어노테이션을 추가하면 에러가 해결됩니다.

QuerydslConfig

@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))
    }
}
  • 결론

    Querydsl을 사용할 때는 JPAQueryFactory를 빈으로 등록해줘야 합니다.
profile
꾸준한 발전을 지향하는 개발자
post-custom-banner

0개의 댓글