작성
·
316
0
안녕하세요 영한팀장님. 강의 너무 잘듣고있습니다.
갑작스럽게 어제까지 잘돌아가던 테스트가
오늘 '집합'부분 테스트를 만들고나서 (aggregation()메소드)
queryFactory 부분에서 nullpointexception이 납니다.
혹시 QClass가 이상하게 되었나 싶어서 clean하여 다시 컴파일하고 실행해도 동일합니다.
그 전에 잘되었던 기존 테스트들도 줄줄이 똑같은 예외를 뱉으며 테스트에 실패합니다.. 이유가 무엇일까요ㅠ 2시간동안 강의못듣고 끙끙 헤매다가 처음으로 질문을 올려봅니다ㅠㅠㅠ
https://drive.google.com/file/d/1ad-mUAI4eRBYuNgKk72mF-MKnpNg2Bp8/view?usp=sharing
소스 코드 공유합니다!!
또한, symbol을 찾지 못하는 예외도 같이 떠서 구글링중에 인텔리제이 설정도 만져보았으나..
해결되지 않습니다 ㅠㅠ
답변 3
3
안녕하세요. Joshua_Kim님, 공식 서포터즈 OMG입니다.
올리신 프로젝트 확인해보았습니다.
전체 테스트 실행 시
@Test
void contextLoads() {
Hello hello = new Hello();
em.persist(hello);
JPAQueryFactory query = new JPAQueryFactory(em);
// QHello qHello = new QHello("h");
QHello qHello = QHello.hello;
Hello result = query
.selectFrom(qHello)
.fetchOne();
assertThat(result).isEqualTo(hello);
assertThat(result.getId()).isEqualTo(hello.getId());
}
이 테스트가 성공하는 것으로 보아 Q클래스 생성에는 문제가 없다고 판단하고 QueryDslBasicTest를 확인해보았습니다.
IDE 상에서
@BeforeEach //data를 미리 넣어두기 위해 세팅
public void before () {
JPAQueryFactory queryFactory = new JPAQueryFactory(em); //entity
queryFactory 가 흰색으로(사용 중이지 않음)으로 표시 되어 확인해보니
바로 위에
JPAQueryFactory queryFactory; //필드레벨로 가지고와서 이렇게 처리해도된다.
가 있더라구요. 필드에서 선언하고, before 메서드에서만 인스턴스를 생성하고 있습니다.
결과적으로 아래와 같이 바꾸시면 테스트 성공합니다.
resultFetch() 테스트는 실패하는데 해당 테스트는 확인해보시길 바랍니다.
JPAQueryFactory queryFactory; //필드레벨로 가지고와서 이렇게 처리해도된다.
@BeforeEach //data를 미리 넣어두기 위해 세팅
public void before () {
queryFactory = new JPAQueryFactory(em); //entitymanager를 넘겨야함
감사합니다.
0
https://drive.google.com/file/d/1ad-mUAI4eRBYuNgKk72mF-MKnpNg2Bp8/view?usp=sharing
권한 변경하여 다시 공유합니다!
사용하고 있는 인텔리제이는 최신버전입니다
0
안녕하세요. Joshua_Kim님, 공식 서포터즈 OMG입니다.
위 링크에서 프로젝트 공유하는 방법을 참고하여 프로젝트 링크를 공유해주세요.
액세스 권한 요청이 출력되지 않도록 해당 설명의 step6를 참고부탁드립니다.
감사합니다.
https://drive.google.com/file/d/1ad-mUAI4eRBYuNgKk72mF-MKnpNg2Bp8/view?usp=sharing
링크 공유합니다!
와... 정말 감사합니다. 알고나니 정말 어이가없는데... 허허허 답변 너무나 감사합니다!