• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

Test에서 QHello.java를 못찾아요

24.03.27 19:18 작성 24.03.27 19:27 수정 조회수 164

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 있는데 다 해봐도 안돼요
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네

[질문 내용]

springboot 3버전으로 해결 방법을 다 써봤는데 안되어서 문의드립니다.

setting -> Annotaion Processors

build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.4'
    id 'io.spring.dependency-management' version '1.1.4'
}

group = 'study'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'

    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

tasks.named('test') {
    useJUnitPlatform()
}

clean {
    delete file('src/main/generated')
}

폴더 확인

 bbuild.gradle 설정도 잘해서 build 폴더에 잘 생겼는데 Test에서 import를 못해요

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.03.27

안녕하세요. 현아님, 공식 서포터즈 OMG입니다.

설명 남겨주신 내용 상 아래의 빌드 과정에 대한 설명이 없으신 것 같아 놓치시지 않았나 싶습니다.

(1) 과 (2)를 순차적으로 진행해주세요 😀

해결이 안될 경우 댓글남겨주세요

 

build

image

감사합니다.

현아님의 프로필

현아

질문자

2024.03.27

그 순서대로 해서 QHello.java 까지 생겼는데 똑같습니다 ㅠ

OMG님의 프로필

OMG

2024.03.27

코드를 확인해봐야 알 것 같아요.

 

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

OMG님의 프로필

OMG

2024.03.30

프로젝트 코드 확인해보았습니다.

설정 적용이 잘 작동하지 않아서 새로 프로젝트를 생성해서 진행하니 잘 되었습니다.

프로젝트 자체에 무언가의 문제가 있는 것 같아요. 따라서 새로 프로젝트를 생성하고 진행해주세요.

 

  • 프로젝트 새로 생성 (기존과 동일한 패키지 구조)

  • 이전 프로젝트의 코드만 복사하여 추가

    • Hello클래스

      @Entity
      @Getter
      @Setter
      public class Hello {
          @Id
          @GeneratedValue(strategy = GenerationType.SEQUENCE)
          private Long id;
      }

     

    • QuerydslApplicationTests

      •  

        @SpringBootTest
        @Transactional
        class QuerydslApplicationTests {
        
            @Autowired
            EntityManager em;
        
        
            @Test
            void contextLoads() {
                Hello hello = new Hello();
                em.persist(hello);
        
                JPAQueryFactory queryFactory = new JPAQueryFactory(em);
              
            }
        
        }

     

  • annotation processing 체크

  • image

     

     

  • build.gradle 변경

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.0'
    id 'io.spring.dependency-management' version '1.1.4'
}


group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'


configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}


repositories {
    mavenCentral()
}


dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'


    //test 롬복 사용
    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'


    //Querydsl 추가
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}


tasks.named('test') {
    useJUnitPlatform()
}


clean {
    delete file('src/main/generated')
}
  • image

  • 코드 인식 확인image

시도해보시고 안될 경우 댓글 남겨주세요 😀

현아님의 프로필

현아

질문자

2024.04.02

제가 다른 컴퓨터에서 똑같이 생성하고 해봤는데도 에러가 나서 혹시 프로젝트 파일을 받을 수는 없을까요?

OMG님의 프로필

OMG

2024.04.02

https://drive.google.com/file/d/1P08b3Zv0VOD2zH5qS5rdZOBEpBKejuUJ/view?usp=sharing

해당 코드로 Q클래스가 인식 가능합니다.

확인해보시겠어요?

 

현아님의 프로필

현아

질문자

2024.04.03

아 넵 확인됩니다. 감사합니다!

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.27

안녕하세요, 인프런 AI 인턴입니다. 현아님, 스프링 부트 3.x 버전에서 QHello 클래스를 테스트 시 찾지 못하는 문제와 관련하여 말씀드립니다.

현아님의 문제는 Querydsl 설정 과정에서 발생한 것으로 보입니다. QHello 클래스는 Querydsl 라이브러리가 엔티티 클래스를 바탕으로 생성하는 Querydsl Q-타입 클래스입니다. 이 Q-타입 클래스는 타입 안전한 쿼리를 작성할 때 사용됩니다. 이 클래스가 생성되지 않거나, 테스트 코드에서 찾지 못하는 경우는 보통 아래와 같은 원인 때문입니다:

  1. Annotation Processor 설정 누락: IntelliJ IDEA 혹은 사용하시는 IDE에서 Annotation Processor를 활성화해야 합니다. 이 설정은 IDE 내에서 Querydsl 관련 코드를 자동으로 생성하게 해주는 중요한 과정이므로, 반드시 확인해주세요.
  2. Gradle 설정 문제: build.gradle 내 Querydsl 관련 설정이 정확하게 이루어졌는지 다시 한 번 확인해야 합니다. 특히, annotationProcessor 경로 설정이 정확한지, 그리고 Querydsl 관련 의존성이 문제 없이 선언되어 있는지 검토가 필요합니다.

현아님의 상황에 가장 유사한 답변이 있는 질문 링크를 제공해 드리겠습니다. 이 링크에서는 Querydsl 설정과 관련된 세부 내용과 함께, 유사한 문제를 겪는 다른 수강생들에게 제공된 해결책을 확인하실 수 있습니다:

  • 3.2버전 gradle 설정에 대한 문제에서는 최신 스프링 부트 버전과 함께 Querydsl을 사용할 때의 설정 방법에 대해 논의되었습니다. 특히 build.gradle에 Querydsl 관련 의존성을 추가하는 방법, 그리고 QHello와 같은 Q-타입 클래스들이 올바르게 생성되고, 테스트에서 인식될 수 있도록 하는 방법이 포함되어 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.