작성
·
3.8K
답변 2
4
안녕하세요. 동명님 답변이 늦었습니다.
@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