Eclipse LauncherFactory에 대한 NoClassDefFoundError로 인해 JUnit 5를 사용하여 발견 된 테스트가 없습니다.


94

문제

내 프로젝트 JUnit 테스트 (Java 9 및 Eclipse Oxygen 1.a와 함께 JUnit 5 사용)를 실행할 때마다 eclipse가 테스트를 찾을 수 없다는 문제가 발생합니다.

설명

실행 구성에서 eclipse는 @Test로 주석 처리 된 메소드도 찾을 수 없지만 대신 " (모든 메소드) " 만 표시합니다 . 다음 그림은 내 설정을 더 잘 보여줍니다.

https://imgur.com/a/FTe9c

콘솔 출력 :

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 주석을 다시 입력하려면

이러한 단계 중 일부는 여기 에서 찾을 수 있지만 결국 문제는 남아 있습니다.


-하지만 당신은이에 대한 대답에 명시된 바와 같이 차이를 찾으려고 않았다 stackoverflow.com/questions/34413/... ?
나만

답변:


20

당신은 우연히 이클립스 버그 525948 이미 수정되었습니다하고있는이 곧 출시 Oxygen.3 (4.7.3) 3 월 21, 2018 게시 할 것이다.

해결 방법으로 테스트 코드를 별도의 프로젝트에 넣고 테스트 중인 프로젝트를 모듈 경로에 추가하되 module-info.java테스트 프로젝트에를 추가하지 마십시오 . 프로젝트, 클래스 및 모듈 이름을 지정하면 다음과 같이 표시됩니다.

여기에 이미지 설명 입력

Eclipse Oxygen.1a의 Java 9 및 JUnit 5가 작동하는 비디오를 참조하십시오.


1
@nullpointer 모듈식이 아닌 새 Java 프로젝트를 만드는 것을 의미합니다 module-info.java. Eclipse에서 Java 프로젝트에는 단일 출력 폴더가 있으므로 하나만 포함하거나 포함하지 않을 수 있습니다 module-info.java. 그러나 프로젝트가 모듈식이 아니더라도 (가 없음 module-info.java) 프로젝트의 모듈 경로에 모듈을 추가 할 수 있습니다 .
howlger

1
이 해킹의 단점 @ShadowDragon 우리는 이렇게 패키지 개인 테스트 할 어차피 테스트 클래스에 대한 다른 패키지 이름이 필요하다는 것입니다
클레오 파트라

7
방금 Oxygen.3 (4.7.3)을 설치했는데 문제가 지속됩니다.
user118967

2
@chomp 2018-09의 경우 증상이 비슷해 보이지만 다른 문제입니다. 테스트가 발견되지 않은 경우 대부분 잘못된 클래스 경로 / 모듈 경로 ( Project> Properties : Java Build Path ) 때문입니다.
howlger dec.

2
@howlger 감사합니다. 최신 버전으로 업그레이드 한 후이 문제는 사라졌습니다. 도와 주셔서 다시 한 번 감사드립니다 :).
Datta

121

테스트를 마우스 오른쪽 버튼으로 클릭하고 '구성 실행'을 선택하고 다음과 같이 "테스트 실행기 :"선택을 'JUnit 4'로 변경하여 문제를 해결했습니다.

실행 구성 스크린 샷

다시 테스트를 실행했는데 효과가있었습니다.


12
JUnit5를 사용하는 동안 실행 구성에서 "JUnit4"를 선택하는 것은 재밌습니다. 큰 프로젝트를 처리하는 동안 신뢰할 수있는 좋은 솔루션이라고 부르지 않겠습니다.
Levent Divilioglu

1
나는 또한이 솔루션이 의심스럽고, 이것이 왜 작동하는지, 그리고 어떤 위험을 감수 할 수 있는지에 대한 설명이 부족하다고 생각합니다.
Amadán

이렇게해도 문제가 해결되지 않으면 동일한 창의 클래스 경로 탭으로 이동하여 JUnit을 부트 스트랩 라이브러리에 추가하십시오.
Abhi

감사; JUnit 4를 선택하면 내 문제가 해결되었습니다. 지금은 문제를 해결하는 가장 간단한 방법입니다.
Tes

제 생각에는이 덜 침습적 인 솔루션, 즉 소스 코드를 수정하지 않는 것입니다.
Rafael Rocha

63

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를 사용하는 동안이 예외가 표시되는 경우에도 동일하게 적용됩니다.


1
gradle을 사용하는 경우 일반적으로 build.gradle. maven을 사용하는 경우 pom.xml. 하지만 maven의 형식은 다릅니다.
Andrii Karaivanskyi

1
그것은 나를 위해 그것을 고쳤습니다. 감사!
Chris

4
다음은 <dependencies>에 들어갈 pom.xml 스 니펫입니다. <dependency> <groupId> org.junit.jupiter </ groupId> <artifactId> junit-jupiter-engine </ artifactId> <version> 5.1.0 </ version> <scope> test </ scope> </ dependency> <dependency> <groupId> org.junit.platform </ groupId> <artifactId> junit-platform-launcher </ artifactId> <version> 1.1.0 </ version> < scope> test </ scope> </ dependency>
user118967

1
여전히 junit-platform 1.1.0을 추가해도 작동하지 않았습니다. 그것은 ""JUnit을 5를 사용하여 테스트 러너 발견 된 테스트 없음 "같은 메시지를 보여줍니다
P 사티 Patro에게

2
@PSatishPatro 위를 추가 한 후. 해당 Junit 테스트 케이스에 대한 구성을 실행 한 다음 Classpath 탭-> Advanced-> Add Library-> OK-> Junit-> Finish로 이동해야합니다. 그럼 가서 실행 껄는의 JUnit 실행 중에 라이브러리를 추가합니다
Jaison Varghese

26

제 경우 문제는 저 자신이었고 Eclipse와 같은 IDE가 없었습니다. JUnit 4 테스트 클래스를 가져 왔습니다.

따라서 이것을 가져 오지 마십시오.

import org.junit.Test  // JUnit 4

그러나 가져 오십시오.

import org.junit.jupiter.api.Test // JUnit 5

현재 프로젝트가 JUnit 5를 사용하고 있기 때문에 JUnit 4와 5 사이를 전환했지만 Hibernate 등에 버그를보고 할 때 JUnit 4로 전환해야합니다. 실수로 가져 오기를 혼합하게되었습니다. 🤦♂️
Kawu

20

지금까지의 답변은 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"프로필을 확인합니다.

Maven 프로필 선택

그것으로 당신은 끝났습니다. Eclipse는 예상대로 Junit 5 테스트를 실행하지만 추가 한 구성은 다른 빌드 나 다른 IDE를 오염시키지 않습니다.


12

이 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를 가져온 Spring Boot 2.x 용으로 JAR 프로젝트를 만들었습니다.이 종속성을 추가했는데 수정 된 것으로 보입니다. 감사!
David Bradley

12

간단한 수정 : (JUnit 5 라이브러리 추가)

명령:

  • 프로젝트-> 빌드 경로-> 빌드 경로 구성을 마우스 오른쪽 버튼으로 클릭하십시오.
  • 팝업-> 라이브러리 추가-> JUnit-> JUnit 5-> 완료-> 적용
  • 프로젝트에 추가 된 JUnit 5 라이브러리 (및 해당 jar)가 표시되어야합니다.
  • 프로젝트-> Maven-> 프로젝트 업데이트-> 확인을 마우스 오른쪽 버튼으로 클릭하십시오.

9

어떤 솔루션도 도움이되지 않았습니다.

문제는 Eclipse 2018-12가 JUnit 5.3.1을 지원한다는 것입니다. 이전 버전으로 시작하면 실패합니다.

따라서 최소한 5.3.1을 사용해야합니다.

5.4.0도 작동합니다.

부모 pom이 Spring Boot 인 경우 (종속성 관리에서) junit-jupiter-api 가 동일한 버전으로 설정되어 있는지 확인해야합니다 . junit-platform-runner 또는 -launcher 가 필요하지 않습니다 !


2
팁 고마워. 2019-3을 <junit-jupiter.version>5.4.1</junit-jupiter.version>사용하고 있으며 Spring boot (2.1.3.RELEASE)에서 사용되는 버전을 재정의하는 속성 을 추가했습니다 .
Ritesh

3
이것은 나를 위해 그것을 고친 것입니다. -launcher 종속성을 제거하고 작동하기 시작했습니다. (eclipse 2019-09 및 junit 5.4.2)
Raymond

이 솔루션은 저에게도 효과적입니다. 그러나 제 경우에는 5.3.1에서 5.5.1로, junit-platform-engine을 1.5.1로 변경했습니다.
Arwan Khoiruddin 19

1
이것은 나를 위해 그것을 고쳤습니다. Eclipse 2020-03에서 테스트는 junit 버전 5.5.2로 시작되지 않고 5.6.0으로 시작되었습니다. 답변에 대한 일반적인 업데이트 : 적어도 이클립스가 사용하는 junit 버전을 사용해야 할 수도 있습니다.
Lars Briem

8

다음 안드리 Karaivanskyi의 대답은 여기에 메이븐 POM 선언입니다 :

<properties>
    ...
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
    ...
</properties>

<dependencies>
    ...
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
    ...
</dependencies>

최신 정보

Alexander Wessel의 의견에 따라 Eclipse No tests found using NoClassDefFoundError for LauncherFactory 질문 에 대한 답변 에서 설명한대로 org.junit : junit-bom 을 사용할 수 있습니다 .


1
jupiter 및 플랫폼 버전에 대한 속성을 선언하지 말고 대신 BOM을 사용하십시오 . 기본적으로를 사용하여 dependencyManagement 태그의 BOM에 종속성 scope=import type=pom을 추가 한 다음 종속성 섹션에 버전제공하지 않고 테스트 범위의 junit-platform-launcher 및 junit-jupiter-engine에 종속성을 추가합니다. BOM은 항상 클래스 경로에 JUnit Platform 및 Jupiter 버전이 하나만 있고 각 버전이 의도 한 버전인지 확인합니다 (예 : 5.2.0과 1.2.0).
Alexander Wessel 2018 년

@AlexanderWessel BOM이 없습니다. 이것은 Maven으로 선언해야하는 종속성을 발췌 한 예일뿐입니다.
Gerold Broser

1
BOM 자체가 있거나 프로젝트가 있는지 여부가 아닙니다. 나는 의해 그 설명했다 오기 는 BOM 의 JUnit 5 제공을 하여도 더 이상 버전을 선언 할 필요가, 당신의 Junit와 목성과 Junit와 플랫폼 버전이 호환 보장 할 수 있습니다 당신은 각각의 의존성에 버전을 선언 할 필요가 없습니다 속성. 명확하게 : 귀하의 예제 잘 작동합니다. 그러나 JUnit BOM을 가져 오는 것은 (내 겸손한 의견으로는) 좀 더 우아하고 어떤 경우에는 더 안전합니다.
Alexander Wessel 2018


7

참고로 "junit5를 사용하여 테스트를 찾을 수 없음"의 또 다른 원인은 (실수로 또는 의도적으로) 테스트 케이스를 "비공개"로 선언하는 것입니다.

// Example of test case that doesn't get included
@Test
private void testSomeMethod() {
}

공개되어야합니다.


5

또한 라이브러리를 추가하는 데 필요한 동일한 문제에 직면했습니다. Junit Library는 이미 Eclipse와 함께 제공되므로 아래를 따르십시오.

빌드 경로> 빌드 경로 구성> 라이브러리> 라이브러리 추가> JUnit> 다음> 완료

그것은 나를 위해 작동합니다


일식에서 잘 작동했습니다. 버전 : 2020-06 (4.16.0) 빌드 ID : 20200615-1200
OJVM

4

처음부터 오류 메시지는 클래스를 찾을 수 없음을 알려줍니다. NoClassDefFoundError즉, junit에 대한 PATH가 문제임을 의미합니다.

  1. 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하거나 프로젝트 폴더를 선택하고 cmd + i 조합을 누릅니다.

  2. "Java 빌드 경로"목록에서 선택하십시오.

  3. "라이브러리"탭을 선택합니다.
  4. JUnit 5 (또는 JUnit 4)가 "Modulepath"에 추가 된 경우 "JUnit 5"를 선택하고 제거를 누릅니다.
  5. "Classpath"를 선택하고 "라이브러리 추가 ..."를 누르십시오.
  6. 열린 "라이브러리 추가"창에서 JUnit을 선택하고 다음을 누릅니다.
  7. 필요한 JUnit 라이브러리 버전을 선택하고 완료를 누르십시오.

그게 다입니다. 테스트를 다시 실행하십시오.


4

넌 그걸 알아야 해 :

@Before 에서 junit4이 @Test와 함께 간다 " 수입 org.junit.Test "

Junit5@BeforeEach 는 " import org.junit.jupiter.api.Test " 와 함께갑니다.

따라서 Junit의 동일한 버전에서 가져 오기를 사용하고 있는지 확인하십시오. 그렇지 않으면 작동하지 않습니다.


3

STS 3.9.1을 사용하면 같은 문제가 발생했습니다. 그러나 현재 새로운 JUnit5 기능이 필요하지 않으므로 이전 버전을 사용하도록 강제로 시도했습니다. maven을 사용하는 경우 pom.xml에 다음 종속성을 추가 할 수 있습니다.

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>${junit.platform.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>${junit.jupiter.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>${junit.vintage.version}</version>
    <scope>test</scope>
</dependency>

이것은 나를 위해 트릭을 수행했습니다 (적어도 JUnit5가 명시 적으로 필요하지 않은 한).


JUnit5를 사용하는 경우 "org.junit.vintage"를 추가 한 이유는 무엇입니까? 이전 JUnit을 사용하는 것과 같이 이전 버전과의 호환성을 위해서만 AFAIK입니다.
Levent Divilioglu

그 프로젝트와 STS 3.9.1에서는 JUnit5가 아니라 JUnit4를 사용할 수 없었습니다.
mahe

3

새 TestCase를 만든 후에도 동일한 문제가 발생했습니다. Eclipse-> New-> JUnit Test Case. 액세스 수준 수정 자없이 클래스를 만듭니다. class 키워드 앞에 public을 넣어서 문제를 해결할 수 있습니다.


클래스와 메서드 모두 공용 키워드가 필요합니다. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi

3

모든 사람이 그것의 IDE 버그를 통보, 나는이에 노력 Eclipse하고STS . 두 경우 모두 실패합니다.

해결 방법으로 아래와 같이 pom.xml 파일을 수정하여 수정했습니다.

이 두 가지 메이븐 종속성 junit-jupiter-enginejunit-platform-launcher.

pom.xml

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform launcher -->
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

또한 속성 태그에 두 가지 Maven 종속성의 버전을 추가해야합니다.

<properties>
    <java.version>1.8</java.version>
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
</properties>

1
junit-platform-launcher 종속성을 추가하면 문제가 해결되었습니다. 감사합니다
Venkatesh Manohar 2011 년

3

이클립스 2019-09를 사용하고 있습니다.

junit-bom 버전을 5.4.0 이상으로 업데이트해야했습니다. 나는 이전에 5.3.1을 가지고 있었고 OP와 동일한 증상을 일으켰습니다.

내 구성은 다음과 같습니다.

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>5.5.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

또 다른 옵션을 추가하는 것입니다 <JUnit을-jupiter.version> 5.4.0 </junit-jupiter.version> 치어 특성
열린 우리당 로야

2

코드 블록을 주석 에 게시 할 수 없기 때문에 여기에 JUnit 5가 필요한 프로젝트에서 사용하는 POM 템플릿이 있습니다.이를 통해 Eclipse에서 빌드하고 "JUnit 테스트로 실행"하고 일반 Maven으로 프로젝트를 빌드 할 수 있습니다.

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>group</groupId>
    <artifactId>project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>project name</name>

    <dependencyManagement>
      <dependencies>
        <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.3.1</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>

    <dependencies>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <!-- only required when using parameterized tests -->
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <scope>test</scope>
      </dependency>
    </dependencies>
</project>

이제 JUnit을 업데이트하려는 경우 한 곳에서 버전을 업데이트하면된다는 것을 알 수 있습니다. 또한 플랫폼 버전 번호는 POM의 어느 위치 에나 표시 될 필요가 없습니다 (호환 가능한 버전에서), junit-bom가져 오기 를 통해 자동으로 관리됩니다 .


2

나는 사용하고있다 :

Spring Tool Suite 4 버전 : 4.4.2.RELEASE 빌드 ID : 201911201053 Java 버전 : 1.8.0_191

표시되는 메시지는 테스트 실행기 'JUnit5'에서 발견 된 테스트 없음입니다.

나를 위해 일한 것은 아래 구성이었습니다.

    <properties>
        <java.version>1.8</java.version>
        <junit-jupiter.version>5.5.2</junit-jupiter.version>
        <junit-platform.version>1.5.2</junit-platform.version>
    </properties> 

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>

2

그룹이 'org.junit.platform', 이름 : 'junit-platform-launcher'인 JUnit 5 플랫폼 런처가 없습니다.

POM을 추가하기 만하면됩니다.

<dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-launcher</artifactId>
    </dependency>

1

이클립스 버전 Oxygen.3a Release (4.7.3a)에서 직면 한 동일한 오류. Maven Dependencies 불일치에 문제가 있습니다. 해결하기 위해 다음 종속성으로 Pom.xml을 업데이트했습니다.

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 com.netapp.junitnmactiopractice JunitAndMactioPractice 0.0.1-SNAPSHOT

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <junit.jupiter.version>5.1.1</junit.jupiter.version>
    <junit.platform.version>1.1.1</junit.platform.version>
</properties>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>


당신은 JUnit을 5 사용자에 대한 가이드 본 적있어 junit-platform-runner": JUnit가 4 환경에서의 JUnit 플랫폼에서 테스트 및 테스트 스위트를 실행하는 러너. "
롤드 (Gerold) Broser

1

당신 만 사용할 수있는 junit-jupiter대신에 테스트 종속성으로 junit-jupiter-api, junit-platform-launcher, junit-jupiter-engine.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.5.2</version>
    <scope>test</scope>
</dependency>

1
이 솔루션은 JUnit 5.6.2, Java 11 (및 Eclipse 2020-03 / 4.15.0)에서 저에게 효과적이었습니다
coseos

1

나를 위해 JUnit 5 라이브러리를 추가하고 종속성을 추가하여 빌드 경로를 구성했습니다.

     <dependency> 
        <groupId>org.junit.platform</groupId> 
        <artifactId>junit-platform-launcher</artifactId> 
        <version>1.1.0</version> 
        <scope>test</scope> 
     </dependency>

별도로.


1

Eclipse (버전 : 2019-12 (4.14.0))에서도이 문제에 직면했습니다. 솔루션은 IntelliJ를 사용하거나 Maven 테스트를 사용하여 Eclipse에서 이러한 테스트를 실행하는 것으로 보입니다.


1

실제로 spring-tool-suite-4-4.5.1을 사용했고 테스트 클래스를 실행하고 싶을 때이 버그가있었습니다. 해결책은 라이브러리 자바 빌드 경로 img의 '자바 빌드 경로', 'junit5'에 추가하는 것이 었습니다.


0

당신은 변해야합니다

@Test
public static void testmethod(){}

...에

@Test
public void testmethod(){}

@Test는 지원되지 않는 정적 메서드입니다.


0

나는 같은 오류를 겪었고, 제 경우 Project Properties > Maven > Update project에는 프로젝트를 청소하고 재 구축 하는 간단한 문제였습니다 .


0

이클립스 메뉴를 통해 내 Test.class를 추가하고 작동했습니다. 프로젝트-> 새로 작성-> 기타-> JUnit-> JUnit 테스트 케이스를 마우스 오른쪽 단추로 클릭하십시오.


0

junit-platform-launcher / junit-platform-runner 버전에 따라 발생할 수 있습니다.

1.1.0 이 작동하지 않습니다

1.4.1 은 내 설정에서 작동합니다.

나는 이것이 다른 버전이 아닌 junit의 상위 버전 라이브러리와 함께 작동하기 때문에 이클립스의 버그라고 생각합니다.

이것은 내 문제를 해결했습니다. 다른 해결책은 나에게 덜 실행 가능하거나 위험 해 보였습니다. 감사.


0

내 목성 API 버전을 최신 버전으로 변경하면 해결되었습니다. 한편, 내 이클립스 및 기타 이클립스 확장 ide (예 : STS)에 빌드 경로 오류가 발생합니다. 모든 maven 업데이트에 대해 ide는 JRE 시스템 라이브러리를 설정하도록 강제합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.