문제
내 프로젝트 JUnit 테스트 (Java 9 및 Eclipse Oxygen 1.a와 함께 JUnit 5 사용)를 실행할 때마다 eclipse가 테스트를 찾을 수 없다는 문제가 발생합니다.
설명
실행 구성에서 eclipse는 @Test로 주석 처리 된 메소드도 찾을 수 없지만 대신 ” (모든 메소드) ” 만 표시합니다 . 다음 그림은 내 설정을 더 잘 보여줍니다.
콘솔 출력 :
java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/java.lang.Class.newInstance(Unknown Source)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 11 more
지금까지 시도한 것
나는 이미 시도했다
- 빌드 경로에서 테스트 폴더를 제거하고 다시 추가합니다.
- @Test로 주석이 달린 메소드 위로 마우스를 가져 가서 테스트를 시작하려면 “Run as JUnit Test”를 클릭하십시오.
- Buildpath에서 JUnit을 제거하고 다시 추가하십시오.
- 이클립스 다시 시작
- 또한 프로젝트 전체 프로젝트를 한 컴퓨터에서 다른 컴퓨터로 옮겼고 제공된 이클립스 설치로 시도했습니다.
- 테스트 방법의 이름을 변경합니다.
- @Test 주석을 다시 입력하려면
답변
당신은 우연히 이클립스 버그 525948 이미 수정되었습니다하고있는이 곧 출시 Oxygen.3 (4.7.3) 3 월 21, 2018 게시 할 것이다.
해결 방법으로 테스트 코드를 별도의 프로젝트에 넣고 테스트 중인 프로젝트를 모듈 경로에 추가하되 module-info.java
테스트 프로젝트에를 추가하지 마십시오 . 프로젝트, 클래스 및 모듈 이름을 지정하면 다음과 같이 표시됩니다.
Eclipse Oxygen.1a의 Java 9 및 JUnit 5가 작동하는 비디오를 참조하십시오.
답변
답변
STS 3.9.1과 동일한 문제가 있습니다. Eclipse 버그처럼 보이지만이 문제를 해결하려면 junit-platform-launcher
프로젝트에 테스트 종속성 을 추가 할 수 있습니다 ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )
이것이 gradle을 사용하는 내 프로젝트에서 한 방법입니다.
dependencies {
// other stuff here
testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "5.${junit5MinorVersion}"
testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: "1.${junit5MinorVersion}"
}
gradle.properties 파일 :
junit5MinorVersion=1.0
IntelliJ IDEA를 사용하는 동안이 예외가 표시되는 경우에도 동일하게 적용됩니다.
답변
제 경우 문제는 저 자신이었고 Eclipse와 같은 IDE가 없었습니다. JUnit 4 테스트 클래스를 가져 왔습니다.
따라서 이것을 가져 오지 마십시오.
import org.junit.Test // JUnit 4
그러나 가져 오십시오.
import org.junit.jupiter.api.Test // JUnit 5
답변
지금까지의 답변은 Eclipse를 반드시 사용하지 않는 다른 사람들과 코드를 공유하는 문제를 해결하지 못했습니다. 여기에 한 가지 제안이 있습니다. 핵심은 Eclipse 케이스를 해결하기 위해 maven 프로필을 사용하는 것입니다.
junit5.version
다음과 같이 pom에 속성 을 정의했다고 가정합니다 .
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit5.version>5.1.1</junit5.version>
</properties>
그런 다음 profiles
섹션에서 다음을 추가하십시오.
<profiles>
<profile>
<id>eclipse</id>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.1.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</profile>
</profiles>
그 후에해야 할 일은 로컬 Eclipse에서 프로필을 선택하는 것입니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 선택 Maven > Select Maven Profiles...
(또는 Ctrl+ Alt+ P) 한 다음 방금 만든 “eclipse”프로필을 확인합니다.
그것으로 당신은 끝났습니다. Eclipse는 예상대로 Junit 5 테스트를 실행하지만 추가 한 구성은 다른 빌드 나 다른 IDE를 오염시키지 않습니다.
답변
이 maven 종속성을 JUnit Jupiter (v.5.5.1)에 추가하면 문제가 해결됩니다.
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.5.1</version>
<scope>test</scope>
</dependency>
답변
간단한 수정 : (JUnit 5 라이브러리 추가)
명령:
- 프로젝트-> 빌드 경로-> 빌드 경로 구성을 마우스 오른쪽 버튼으로 클릭하십시오.
- 팝업-> 라이브러리 추가-> JUnit-> JUnit 5-> 완료-> 적용
- 프로젝트에 추가 된 JUnit 5 라이브러리 (및 해당 jar)가 표시되어야합니다.
- 프로젝트-> Maven-> 프로젝트 업데이트-> 확인을 마우스 오른쪽 버튼으로 클릭하십시오.