-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
@DataJpaTest
20.01.30 01:53 작성 조회수 3.55k
1
QueryDsl 강의 잘듣고 있습니다!
QueryDsl을 사용하면 @DataJpaTest를 사용하지 못하나요?
JPAQueryFactory에 대해서 NoSuchBeanDefinitionException이 발생하는데 따로 주입하는 방법을 모르겠습니다ㅠㅠ
답변을 작성해보세요.
4
김영한
지식공유자2020.02.03
안녕하세요. 동명님 답변이 늦었습니다.
@DataJpaTest를 사용하면 별도의 스프링 빈을 등록하지 않고, 엔티티들과 EntityManager 정도만 등록해서 테스트하게 됩니다.
JPAQueryFactory도 별도의 빈을 등록하는 것이기 때문에 동작하기 않습니다.
EntityManager는 주입받을 수 있으므로 다음과 같이 테스트 코드를 작성하시면 됩니다.
package study.querydsl;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import study.querydsl.entity.Member;
import study.querydsl.entity.QMember;
import javax.persistence.EntityManager;
import static org.assertj.core.api.Assertions.*;
@DataJpaTest
public class HelloDataJpaTest {
@Autowired EntityManager em;
JPAQueryFactory queryFactory;
@BeforeEach
public void init() {
queryFactory = new JPAQueryFactory(em);
}
@Test
public void helloQueryFactory() {
Member newMember = new Member("user1");
em.persist(newMember);
Member findMember = queryFactory
.selectFrom(QMember.member)
.fetchOne();
assertThat(findMember).isEqualTo(newMember);
}
}
감사합니다^^
0
답변 2