Execution failed for task ':compileTestJava' 에러
아래는 에러의 내용입니다.
Testing started at 오후 3:18 ...
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :compileTestJava FAILED
C:\Project\demo-community\src\test\java\com\minsu\community\democommunity\AutoconfigurationApplicationTests.java:3: error: package org.junit does not exist
import org.junit.Test;
^
C:\Project\demo-community\src\test\java\com\minsu\community\democommunity\AutoconfigurationApplicationTests.java:4: error: package org.junit.runner does not exist
import org.junit.runner.RunWith;
^
C:\Project\demo-community\src\test\java\com\minsu\community\democommunity\AutoconfigurationApplicationTests.java:12: error: package org.junit does not exist
import static org.junit.Assert.assertThat;
^
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.4.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 533ms
3 actionable tasks: 1 executed, 2 up-to-date
처음 배우는 스프링 부트2
책을 공부하면서 테스트 코드 작성중에 에러가 나서 당황했습니다; (그대로 쳐서 당연히 될줄 알았는데..ㅋㅋ)
먼저 @RunWith
를 사용하기 위해 junit4를 classpath에 추가해주었습니다.
(빨간색 표시에 alt + enter
누르시면 해결법이 나옵니다.)
assertThat()
이나 is()
메서드 사용은
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
두 개를 추가해주어서 해결은 되었지만 책 p55 에 코드를 그대로 쳤는데도 에러가 떴습니다.
그래서 첫번째 방법으로 로그를 자세히 보기 위해 '--warning-mode all' 을 실행했죠.
위 사진의 로그를 보니까 Please use the testImplementation configuration instead.
라고 되어있습니다. 아마 Release 가 업그레이드되면서 기존에는
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
이렇게 되어있길래 testCompile 대신에 testImplementation 로 바꾸어 수정하였습니다.
하지만 에러는 그대로더군요 ㅠ.ㅠ
아무래도 그레들 버전때문인 것 같은데.. 구글링을 하던중에 아래 블로그를 보았습니다.
https://ezor.tistory.com/101
https://github.com/jojoldu/freelec-springboot2-webservice/issues/2
혹시 그레드 래퍼 버전을 다운그레이드 하면 될라나??
결과는 다음과 같이 뜹니다.
제가 스프링부트 2.3버전으로 생성했는데 그레들 버전을 업하라고 하더군요..
어떻게보면 다운그레이드하는게 이상하기 하죠..
해결
2~3시간 동안 헤맨끝에 드디어 해결법을 찾았는데요.
위에서 테스트 코드를 RunWith(SpringRunner.class)
를 사용하여 junit4
를 classpath
에 추가하였습니다.
문제는 버전
이었습니다.
스프링부트 2.3.3, gradle은 최소 6.3 이상 사용하고 있는 상황에서 junit4가 아닌 junit5를 사용했더니 테스트가 바로 정상적으로 동작하였습니다.
junit5를 사용할때는RunWith(SpringRunner.class)
대신 ExtendWith(SpringExtension.class)
assertThat()
이나 is()
메서드를 사용하기 위해 import는
import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
입니다.
참고사이트 : https://longbeom.tistory.com/89
처음 배우는 스프링 부트2
란 책이 아무래도 2018년꺼다 보니 버전에 문제가 생겼습니다.
저는 intellij community 버전을 이용하고 있는데, 책에서는 2.0.3 버전을 사용하라 했지만 https://start.spring.io/ 에 그 버전이 없어서 2.3.3을 사용했습니다.
역시 버전 관리는 중요합니다!!
https://github.com/spring-projects/spring-boot/wiki
여기 사이트에 가시면 버전별로 무엇이 바꼈는지 확인 가능할 것 같습니다.
만약 롬복을 추가했다면 또다시 컴파일 에러뜨는데, 밑의 링크를 참고하시면 됩니다.
'Spring' 카테고리의 다른 글
Gradle 이용한 Spring Boot 프로젝트 생성 (0) | 2020.08.28 |
---|---|
스프링 부트 1.5.x 와 2.x 의 oauth2 의존성 (0) | 2020.08.24 |
junit5에서 junit4로 변경 (0) | 2020.08.24 |
intellij에서 Spring Boot 프로젝트 생성(Community 버전) (0) | 2020.08.17 |
intellij에서 Lombok 설정하기 & Lombok CompileTestJava Error (0) | 2020.08.15 |
댓글