@DataJpaTest 어노테이션을 사용한 MemberRepository 테스트 구현 중 JpaQueryFactory 빈 등록 오류를 만났다.
JpaQueryFactory 빈 설정
@EnableJpaAuditing
@Configuration
public class JpaConfig {
@PersistenceContext
private EntityManager em;
@Bean
public JPAQueryFactory jpaQueryFactory(){
return new JPAQueryFactory(em);
}
}
MemberRepository 테스트 코드
@DataJpaTest
class MemberRepositoryTest {
@Autowired
private MemberRepository repository;
@Test
void test(){
Member member = Member.builder()
.email("a")
.password("pwd")
.nickname("aaa")
.build();
Member result = repository.save(member);
System.out.println("result = " + result);
}
}
구글링 결과 @DataJpaTest
어노테이션은 스프링이 관리하는 모든 빈을 가져오는 것이 아니라 엔티티
와 EntityManager
정도만 등록해주기 때문에 JpaQueryFactory
빈은 인식하지 못한다. 그러므로 JpaQueryFactory
빈을 인식 할 수 있도록 별도로 @Import 어노테이션을 사용해 빈을 인식할 수 있도록 해줘야 한다.
@Import(JpaConfig.class)
@DataJpaTest
class MemberRepositoryTest {
.......
}