jojoldu / freelec-springboot2-webservice

1.07k stars 462 forks source link

P74 테스트코드에서 에러가 발생합니다. #2

Closed ssooya90 closed 4 years ago

ssooya90 commented 4 years ago

HelloResponseDtoTest.java에서 메소드 실행 시 아래와 같은 에러가 발생합니다.


Testing started at 오후 11:08 ...

Task :cleanTest UP-TO-DATE Task :compileJava FAILED C:\Users\ssooy\Desktop\dev\springboot-book\src\main\java\com\ssooya\book\springboot\web\dto\HelloResponseDto.java:10: error: variable name not initialized in the default constructor private final String name; ^ C:\Users\ssooy\Desktop\dev\springboot-book\src\main\java\com\ssooya\book\springboot\web\dto\HelloResponseDto.java:11: error: variable amount not initialized in the default constructor private final int amount; ^ 2 errors FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':compileJava'. Compilation failed; see the compiler error output for details.
  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
  • Get more help at https://help.gradle.org BUILD FAILED in 1s 2 actionable tasks: 1 executed, 1 up-to-date

책에서 나온대로 진행했는데, 에러가 발생해서 구글링을 좀 해보았습니다. dependencies { compile('org.springframework.boot:spring-boot-starter-web')

**annotationProcessor("org.projectlombok:lombok")
compileOnly("org.projectlombok:lombok")**

testCompile('org.springframework.boot:spring-boot-starter-test')

}

위처럼 바꾸니 정상적으로 실행이 되는데, 무엇이 문제였을까요?

그리고 2-29 테스트 결과가 앞에서 테스트한 hello_리턴된다의 이미지처럼 보입니다^^; 사용중인 환경은 아래와 같습니다. intellij ultimate 2019.3 windows10 사용중입니다.

감사합니다.

p.s. 질문을 여기에 올리는게 맞는지 정확하게 몰라서 이곳에 남겼습니다. 혹 이곳이 아니라면 말씀해주시면 참고하겠습니다.

theVelopr commented 3 years ago

@jojoldu Chapter 4에서 Mustache를 이용한 실습을 하던중 HolloControllerTest부분에 illegalargumentexception이 뜨면서 더 이상 진행이 안되길래 BaseTimeEntity와 관련 테스트들을 주석처리하니 다시 테스트가 통과되는 현상이 있습니다. gradle은 4.10.2 버전으로 wrapping 했으며 Junit4를 사용하고 있습니다.

devsungmin commented 3 years ago

같은 문제로 해결방법 찾다가 역시 책은 처음부터 보면서 책 저자분과 같은 환경에서 진행 해야 하고 환경 세팅의 중요성을 한번 더 깨닫고 갑니다 ㅠㅠ

isun-dev commented 3 years ago

다운그레이드하고도 동일한 현상이 나타나서 확인해보니, IntelliJ IDEA 2020.3에서는 롬복 문제로, Preferences | Build, Execution, Deployment | Compiler | Build process VM options field에 -Djps.track.ap.dependencies=false 를 추가해야 정상작동이 된다고 하여, 추가 후 테스트 정상적으로 됐습니다!

copper-tech commented 3 years ago

74 Page = HelloResponseDto.java 에서 아래 에러가 발생했습니다. error: variable name not initialized in the default constructor private final String name; ^ error: variable amount not initialized in the default constructor private final int amount; ^

위에 @yazbyz 님이 알려주신 방법으로 해결했습니다.

build.gradle

dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile('org.projectlombok:lombok') testCompile('org.springframework.boot:spring-boot-starter-test') <<< 이 부분을 추가했습니다. }

IntelliJ 버전은 다음과 같습니다.

IntelliJ IDEA 2021.1 (Ultimate Edition) Build #IU-211.6693.111, built on April 6, 2021

7loro commented 3 years ago

gradle 최신 6.8 버전으로 테스트 했고, build.gradle 에 아래 dependencies 추가해주면 동작합니다. annotationProcessor('org.projectlombok:lombok')

dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile('org.projectlombok:lombok') annotationProcessor('org.projectlombok:lombok') testImplementation 'junit:junit:4.13.1' testCompile('org.springframework.boot:spring-boot-starter-test') testAnnotationProcessor('org.projectlombok:lombok') }

hohyunjun commented 2 years ago

저는 아래와 같은 메시지의 에러가 났었는데, 구글링 하다보니 jdk16 과 롬복과의 호환 관련된 문제였습니다. java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x6f3d6636) ~

결론적으로, 롬복을 1.18.20으로 명시해 주었더니 문제 해결되었습니다. build.gradle 에서 dependencies 를 아래와 같이 수정하였습니다.

dependencies {

implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.projectlombok:lombok')
annotationProcessor('org.projectlombok:lombok:1.18.22')
//annotationProcessor('org.projectlombok:lombok')
testImplementation 'junit:junit:4.13.1'
testImplementation('org.springframework.boot:spring-boot-starter-test')

}

yeojin1111 commented 2 years ago

gradle 최신 7.4 버전으로 테스트 했고

dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok' annotationProcessor('org.projectlombok:lombok') testImplementation 'junit:junit:4.13.2' testImplementation 'org.springframework.boot:spring-boot-starter-test' }

이렇게도 동작됩니다

Yelin-park commented 1 year ago

비슷한 문제가 발생했는데 해결했습니다! 감사합니다 : )