Eclipse Es wurden keine Tests mit JUnit 5 gefunden, die durch NoClassDefFoundError für LauncherFactory verursacht wurden

92

Das Problem

Immer wenn ich den JUnit-Test meines Projekts ausführe (mit JUnit 5 mit Java 9 und Eclipse Oxygen 1.a), tritt das Problem auf, dass Eclipse keine Tests finden kann.

Die Beschreibung

In der Ausführungskonfiguration kann Eclipse nicht einmal die mit @Test kommentierte Methode finden, sondern zeigt mir nur " (alle Methoden) ". Das folgende Bild gibt hoffentlich einen besseren Einblick in mein Setup:

https://imgur.com/a/FTe9c

Konsolenausgabe:

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

Was ich bisher versucht habe

Ich habe es schon versucht

  • um den Testordner aus dem Erstellungspfad zu entfernen und erneut hinzuzufügen.
  • Um den Test zu starten, bewegen Sie den Mauszeiger über die mit @Test kommentierte Methode und klicken Sie dann auf "Als JUnit-Test ausführen".
  • Entfernen Sie JUnit aus Buildpath und fügen Sie es erneut hinzu
  • Starten Sie Eclipse neu
  • Ich habe auch das gesamte Projekt des Projekts von einem Computer auf einen anderen verschoben und es mit der dort bereitgestellten Eclipse-Installation versucht
  • um die Testmethode umzubenennen.
  • um die @ Test-Annotation erneut einzugeben

Einige dieser Schritte finden Sie hier , aber am Ende blieb das Problem bestehen.

Schattendrachen
quelle
Aber haben Sie versucht, den Unterschied herauszufinden, wie in der Antwort darauf angegeben - stackoverflow.com/questions/34413/… ?
Naman

Antworten:

20

Sie sind auf den Eclipse-Fehler 525948 gestoßen, der bereits behoben wurde und in der kommenden Version Oxygen.3 (4.7.3) vom 21. März 2018 veröffentlicht wird.

Als Abhilfe, setzen Sie Ihren Test - Code in einem separaten Projekt und fügen Sie das Projekt im Test auf die ModulePath, aber füge keine module-info.javazu Ihrem Testprojekt. Bei der Benennung Ihres Projekts, Ihrer Klasse und Ihres Moduls sollte es ungefähr so ​​aussehen:

Geben Sie hier die Bildbeschreibung ein

Siehe auch mein Video, das Java 9 und JUnit 5 in Eclipse Oxygen.1a in Aktion zeigt

heulend
quelle
1
@nullpointer Ich möchte ein neues Java-Projekt erstellen, das nicht modular ist (nein hat module-info.java). In Eclipse verfügt ein Java-Projekt über einen einzelnen Ausgabeordner und kann daher nur einen oder keinen enthalten module-info.java. Sie können dem Modulpfad des Projekts jedoch Module hinzufügen, obwohl das Projekt nicht modular aufgebaut ist (keine hat module-info.java).
Heulen
1
@ShadowDragon Der Nachteil bei diesem Hack ist, dass wir einen anderen Paketnamen für die Testklassen benötigen, daher keine
paketprivaten
7
Ich habe gerade Oxygen.3 (4.7.3) installiert und das Problem besteht weiterhin.
user118967
2
@chomp Wenn Sie 2018-09 haben, ist es ein anderes Problem, auch wenn die Symptome ähnlich aussehen. Wenn keine Tests gefunden wurden, liegt dies hauptsächlich an einem falschen Klassenpfad / Modulpfad ( Projekt> Eigenschaften: Java-Erstellungspfad ).
Heulen
2
@howlger Danke. Nach dem Upgrade auf die neueste Version ist dieses Problem behoben. Danke nochmal für deine Hilfe :).
Datta
118

Ich habe das Problem behoben, indem ich mit der rechten Maustaste auf den Test geklickt und "Konfigurationen ausführen" ausgewählt und die Auswahl "Testläufer:" in "JUnit 4" geändert habe, wie hier gezeigt:

Screenshot der Ausführungskonfigurationen

Ich habe den Test erneut durchgeführt und es hat funktioniert.

stringVector
quelle
12
Es ist lustig, dass Sie bei der Verwendung von JUnit5 in Laufkonfigurationen "JUnit4" auswählen. Ich werde das nicht als eine gute Lösung bezeichnen, auf die ich mich bei einem großen Projekt verlassen kann.
Levent Divilioglu
1
Ich finde diese Lösung auch verdächtig, es fehlt sogar eine Erklärung, warum dies funktioniert und welche Risiken man eingehen kann.
Amadán
Wenn dies das Problem für Sie nicht gelöst hat, wechseln Sie im selben Fenster zur Registerkarte Klassenpfad und fügen Sie JUnit zu den Bootstrap-Bibliotheken hinzu.
Abhi
Vielen Dank; Durch Auswahl von JUnit 4 wurden meine Probleme behoben. Im Moment ist dies der einfachste Weg, um das Problem zu beheben.
Tes
Meiner Meinung nach diese weniger invasive Lösung, dh ohne den Quellcode zu ändern.
Rafael Rocha
62

Ich habe das gleiche Problem mit STS 3.9.1. Es scheint ein Eclipse-Fehler zu sein. Um dies zu beheben, können Sie junit-platform-launcherIhrem Projekt eine Testabhängigkeit hinzufügen ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher ).

So habe ich es für mein Projekt gemacht, das gradle verwendet:

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 Datei:

junit5MinorVersion=1.0

Ich glaube, dasselbe gilt, wenn Sie diese Ausnahme bei der Verwendung von IntelliJ IDEA sehen.

Andrii Karaivanskyi
quelle
1
Wenn Sie Gradle verwenden, geht es normalerweise um build.gradle. Wenn Sie Maven verwenden, ist es pom.xml. Das Format für Maven ist jedoch unterschiedlich.
Andrii Karaivanskyi
1
Das hat es für mich behoben. Vielen Dank!
Chris
4
Hier ist das pom.xml-Snippet für <dependencies>: <dependency> <groupId> org.junit.jupiter </ groupId> <artifactId> junit-jupiter-engine </ifactId> <version> 5.1.0 </ version> <scope> test </ scope> </ dependency> <dependency> <groupId> org.junit.platform </ groupId> <artifactId> junit-platform-launcher </ arifactId> <version> 1.1.0 </ version> < scope> test </ scope> </ dependency>
user118967
1
Das Hinzufügen von junit-platform 1.1.0 hat bei mir immer noch nicht funktioniert. Es zeigt die gleiche Meldung "Keine Tests mit Testläufer mit JUnit 5 gefunden"
P Satish Patro
2
@PSatishPatro Nach dem Hinzufügen der oben genannten. Sie müssen die Konfiguration für diesen Junit-Testfall ausführen und dann zur Registerkarte Klassenpfad-> Erweitert-> Bibliothek hinzufügen-> OK-> Junit-> Fertig stellen gehen. Dann fahren Sie fort und führen Sie es aus. Dadurch wird die Bibliothek während der Ausführung des Junit
Jaison Varghese
26

In meinem Fall war das Problem ich selbst und keine IDE wie Eclipse. Ich habe die JUnit 4-Testklasse importiert.

Importieren Sie diesen also NICHT:

import org.junit.Test  // JUnit 4

Aber importieren Sie das:

import org.junit.jupiter.api.Test // JUnit 5
armin.miedl
quelle
Ich habe zwischen JUnit 4 und 5 gewechselt, weil das aktuelle Projekt JUnit 5 verwendet, aber wenn ich Fehler an Hibernate usw. melde, muss ich auf JUnit 4 umsteigen. Am Ende habe ich versehentlich die Importe gemischt. 🤦‍♂️
Kawu
20

In den bisherigen Antworten wurde das Problem der Freigabe von Code für andere Personen, die Eclipse nicht unbedingt verwenden, nicht angesprochen. Hier ist ein Satz. Der Schlüssel besteht darin, ein Maven-Profil zu verwenden, um den Eclipse-Fall zu lösen.

Es wird davon ausgegangen, dass Sie eine Eigenschaft junit5.versionin Ihrem POM wie folgt definiert haben :

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit5.version>5.1.1</junit5.version>
</properties>

profilesFügen Sie dann im Abschnitt Folgendes hinzu:

<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>

Danach müssen Sie nur noch das Profil in Ihrer lokalen Eclipse auswählen: Klicken Sie mit der rechten Maustaste auf Ihr Projekt und wählen Sie Maven > Select Maven Profiles...(oder drücken Sie Ctrl+ Alt+ P) und überprüfen Sie das soeben erstellte "Eclipse" -Profil.

Auswahl des Maven-Profils

Damit sind Sie fertig. Ihre Eclipse führt erwartungsgemäß Junit 5-Tests aus, aber die von Ihnen hinzugefügte Konfiguration verschmutzt keine anderen Builds oder andere IDE

Aldian
quelle
12

Das Hinzufügen dieser Maven-Abhängigkeit mit JUnit Jupiter (v.5.5.1) löst das Problem.

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>
hbhattac
quelle
Ich hatte ein JAR-Projekt für Spring Boot 2.x erstellt, das JUnit 5 einbrachte. Ich habe diese Abhängigkeit hinzugefügt und es scheint sie behoben zu haben. Vielen Dank!
David Bradley
12

EINFACHES FIX: (JUnit 5-Bibliothek hinzufügen)

ANLEITUNG:

  • Klicken Sie mit der rechten Maustaste auf Projekt -> Erstellungspfad -> Erstellungspfad konfigurieren
  • Im Popup -> Bibliothek hinzufügen -> JUnit -> JUnit 5 -> Fertig stellen -> Übernehmen
  • Sie sollten die JUnit 5-Bibliothek (und ihre Gläser) sehen, die Ihrem Projekt hinzugefügt wurde
  • Klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Projekt aktualisieren -> OK
Jerry Carney
quelle
9

Keine der Lösungen half:

Das Problem ist, dass Eclipse 2018-12 JUnit 5.3.1 unterstützt. Wenn Sie es mit einer vorherigen Version starten, schlägt es fehl.

Stellen Sie also sicher, dass Sie mindestens 5.3.1 verwenden.

5.4.0 funktioniert auch.

Wenn Ihr übergeordneter POM Spring Boot ist, müssen Sie (im Abhängigkeitsmanagement) sicherstellen, dass junit-jupiter-api auf dieselbe Version eingestellt ist. Du brauchst keinen Junit-Plattform-Runner oder -Luncher !

T3rm1
quelle
2
Danke für den Tipp. Ich verwende 2019-3 und habe eine Eigenschaft hinzugefügt <junit-jupiter.version>5.4.1</junit-jupiter.version>, um die im Spring-Boot verwendete Version (2.1.3.RELEASE) zu überschreiben.
Ritesh
3
Dies war derjenige, der es für mich behoben hat. Ich habe die -launcher-Abhängigkeit entfernt und sie hat funktioniert. (Sonnenfinsternis 2019-09 und Juni 5.4.2)
Raymond
Diese Lösung funktioniert auch bei mir. In meinem Fall habe ich jedoch von 5.3.1 auf 5.5.1 und die Junit-Plattform-Engine auf 1.5.1 geändert.
Arwan Khoiruddin
1
Das hat es für mich behoben. In Eclipse 2020-03 begannen die Tests nicht mit Junit Version 5.5.2, sondern mit 5.6.0. Als allgemeines Update für Ihre Antwort: Möglicherweise muss mindestens die von Eclipse verwendete Junit-Version verwendet werden.
Lars Briem
8

Nach der Antwort von Andrii Karaivanskyi folgt hier die POM-Erklärung von Maven:

<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>

AKTUALISIEREN

Gemäß dem Kommentar von Alexander Wessel können Sie org.junit: junit-bom wie in seiner Antwort auf Frage Eclipse beschrieben verwenden. Es wurden keine Tests mit JUnit 5 gefunden, die von NoClassDefFoundError für LauncherFactory verursacht wurden .

Gerold Broser
quelle
1
Deklarieren Sie keine Eigenschaften für die Jupiter- und Plattformversionen, sondern verwenden Sie stattdessen die Stückliste . Fügen Sie im dependencyManagement-Tag grundsätzlich eine Abhängigkeit von der Stückliste hinzu scope=import type=pom, und fügen Sie dann im Testbereich Abhängigkeiten zu junit-platform-launcher und junit-jupiter-engine hinzu, ohne im Abschnitt "Abhängigkeiten" eine Version anzugeben. Die Stückliste stellt immer sicher, dass Sie nur eine Version von JUnit Platform und Jupiter im Klassenpfad haben und dass die entsprechenden Versionen die beabsichtigten sind (z. B. 5.2.0 mit 1.2.0).
Alexander Wessel
@ AlexanderWessel Ich habe keine Stückliste. Dies ist nur ein Beispielauszug, welche Abhängigkeiten man mit Maven deklarieren muss, wo immer dies sein mag.
Gerold Broser
1
Es ist nicht so, ob Sie (oder besser gesagt, Ihr Projekt) eine Stückliste selbst haben. Ich habe erklärt, dass Sie durch den Import der von JUnit 5 bereitgestellten Stückliste sicherstellen können, dass die Versionen Junit Jupiter und Junit Platform kompatibel sind, und dass Sie keine Version in den einzelnen Abhängigkeiten deklarieren müssen, sodass Sie die Version auch nicht mehr deklarieren müssen Eigenschaften. Um es klar auszudrücken: Ihr Beispiel funktioniert gut. Der Import der JUnit-Stückliste ist jedoch (meiner bescheidenen Meinung nach) etwas eleganter und unter bestimmten Umständen sicherer.
Alexander Wessel
7

Zu Ihrer Information, eine andere Ursache für "Keine mit junit5 gefundenen Tests" ist (versehentlich oder absichtlich), dass die Testfälle als "privat" deklariert werden:

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

Sie müssen öffentlich sein.

Mike B.
quelle
5

Ich hatte auch das gleiche Problem, dass Sie nur die Bibliothek hinzufügen müssen. Junit Library wird bereits zusammen mit Eclipse bereitgestellt, sodass Sie nur unten folgen müssen

Erstellungspfad> Erstellungspfad konfigurieren> Bibliothek> Bibliothek hinzufügen> JUnit> Weiter> Fertig stellen

Für mich geht das

Alok Ranjan
quelle
In Eclipse hat es gut funktioniert. Version: 2020-06 (4.16.0) Build-ID: 20200615-1200
OJVM
4

Von Anfang an sagt Ihnen die Fehlermeldung, dass die Klasse nicht gefunden wurde: NoClassDefFoundErrorDas bedeutet, dass der Pfad zu junit das Problem ist.

  1. Klicken Sie mit der rechten Maustaste auf den Projektordner und wählen Sie Eigenschaften ODER wählen Sie den Projektordner und drücken Sie die Kombination cmd + i.

  2. Wählen Sie aus der Liste "Java Build Path".

  3. Wählen Sie die Registerkarte "Bibliotheken"
  4. Wenn JUnit 5 (oder JUnit 4) zu "Modulepath" hinzugefügt wird, wählen Sie "JUnit 5" und drücken Sie Entfernen.
  5. Wählen Sie "Klassenpfad" und drücken Sie "Bibliothek hinzufügen ...".
  6. Wählen Sie im geöffneten Fenster "Bibliothek hinzufügen" die Option "JUnit" und klicken Sie auf "Weiter".
  7. Wählen Sie die gewünschte JUnit-Bibliotheksversion aus und klicken Sie auf Fertig stellen.

Das ist alles. Versuchen Sie erneut, den Test auszuführen.

Ion Timotin
quelle
4

das solltest du wissen :

@Before from junit4 geht mit @Test: " import org.junit.Test "

UND

@BeforeEach von Junit5 geht mit: " org.junit.jupiter.api.Test importieren "

Stellen Sie also sicher, dass Sie die Importe aus derselben Junit-Version verwenden, sonst funktioniert es vermutlich nicht.

Y.halaoui
quelle
3

Mit STS 3.9.1 habe ich das gleiche Problem. Derzeit benötige ich jedoch keine neuen JUnit5-Funktionen, daher habe ich versucht, die Verwendung einer älteren Version zu erzwingen. Wenn Sie maven verwenden, können Sie Ihrer pom.xml folgende Abhängigkeiten hinzufügen:

<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>

Dies hat den Trick für mich getan (zumindest solange ich JUnit5 nicht explizit benötige).

mahe
quelle
Warum haben Sie "org.junit.vintage" hinzugefügt, wenn Sie JUnit5 verwenden? Es ist nur für die Abwärtskompatibilität (wie bei der Verwendung von altem JUnit) AFAIK.
Levent Divilioglu
Denn mit diesem Projekt und STS 3.9.1 konnte / konnte ich JUnit5 nicht verwenden, sondern JUnit4.
Mahe
3

Ich habe das gleiche Problem nach dem Erstellen eines neuen Testfalls erhalten: Eclipse -> Neu -> JUnit-Testfall. Es wird eine Klasse ohne Modifikator für die Zugriffsebene erstellt. Ich könnte das Problem lösen, indem ich einfach eine Öffentlichkeit vor das Schlüsselwort class setze.

du-it
quelle
Sowohl für die Klasse als auch für die Methode ist ein öffentliches Schlüsselwort erforderlich. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi
3

Wie jeder mitteilte, war es ein IDE-Fehler, den ich in Eclipseund ausprobiert hatte STS. In beiden Fällen schlägt dies fehl.

Um dieses Problem zu umgehen, habe ich die Datei pom.xml wie folgt geändert.

Ich habe diese beiden Maven-Abhängigkeiten junit-jupiter-engineund hinzugefügt junit-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>

Stellen Sie außerdem sicher, dass Sie die Version der beiden Maven-Abhängigkeiten im Eigenschaften-Tag hinzufügen.

<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>
Arvind Katte
quelle
1
Das Hinzufügen der Junit-Platform-Launcher-Abhängigkeit löste das Problem für mich. Vielen Dank
Venkatesh Manohar
3

Ich benutze Eclipse 2019-09.

Ich musste die Junit-Bom-Version auf mindestens 5.4.0 aktualisieren. Ich hatte zuvor 5.3.1 und das verursachte die gleichen Symptome des OP.

Meine Konfiguration ist jetzt:

    <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>
Klumpen
quelle
Eine andere Option ist das Hinzufügen von <junit-jupiter.version> 5.4.0 </junit-jupiter.version> zu pom-Eigenschaften
Uri Loya
2

Da es nicht möglich ist, Codeblöcke in Kommentaren zu veröffentlichen, ist hier die POM-Vorlage, die ich in Projekten verwende, für die JUnit 5 erforderlich ist. Dies ermöglicht das Erstellen und Ausführen als JUnit-Test in Eclipse und das Erstellen des Projekts mit einfachem 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>

Sie können sehen, dass Sie die Version jetzt nur noch an einer Stelle aktualisieren müssen, wenn Sie JUnit aktualisieren möchten. Außerdem muss die Versionsnummer der Plattform (in einer kompatiblen Version) nirgendwo in Ihrem POM angezeigt werden, sondern wird automatisch über den junit-bomImport verwaltet.

Alexander Wessel
quelle
2

Ich benutze:

Spring Tool Suite 4 Version: 4.4.2.RELEASE Build-ID: 201911201053 Java-Version: 1.8.0_191

und die angezeigte Meldung lautet Keine Tests mit Testläufer 'JUnit5' gefunden

Was für mich funktioniert hat, war die Konfiguration unten

    <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>
Ukaliko
quelle
2

Sie vermissen den JUnit 5-Plattformstarter mit der Gruppe 'org.junit.platform', Name: 'junit-platform-launcher'

Fügen Sie einfach Ihr POM hinzu:

<dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-launcher</artifactId>
    </dependency>
Ravi Ranjan
quelle
1

Der gleiche Fehler trat in der Eclipse-Version Oxygen.3a Release (4.7.3a) auf. Es gibt ein Problem bei der Nichtübereinstimmung von Maven-Abhängigkeiten. Um dieses Problem zu lösen, habe ich meine Pom.xml mit den folgenden Abhängigkeiten aktualisiert.

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>

Harpreet Singh
quelle
Haben Sie das JUnit 5-Benutzerhandbuch zu junit-platform-runnerfolgenden Themen gesehen : " Runner zum Ausführen von Tests und Testsuiten auf der JUnit-Plattform in einer JUnit 4-Umgebung. "
Gerold Broser
1

Sie können nur verwendet werden, junit-jupiteranstatt als Testabhängigkeit 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>
aly
quelle
1
Diese Lösung funktionierte für mich mit JUnit 5.6.2, Java 11 (und Eclipse 2020-03 / 4.15.0)
coseos
1

Für mich habe ich den Erstellungspfad so konfiguriert, dass JUnit 5 Library hinzugefügt wird und auch die Abhängigkeit hinzugefügt wird

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

getrennt.

Dineshotham Kumar Khambhammett
quelle
1

Dieses Problem trat auch bei Eclipse (Version: 2019-12 (4.14.0)) auf. Die Lösung scheint entweder IntelliJ oder den Maven-Test zu verwenden, um solche Tests in Eclipse auszuführen.

Srini Ramjee
quelle
1

Ich habe tatsächlich Spring-Tool-Suite-4-4.5.1 verwendet und hatte diesen Fehler, wenn ich eine Testklasse ausführen möchte. und die Lösung bestand darin, 'java build path', 'junit5' in Libraries java build path img hinzuzufügen

fatima fahmi
quelle
0

du solltest dich ändern

@Test
public static void testmethod(){}

zu

@Test
public void testmethod(){}

Der @ Test ist eine nicht unterstützte statische Methode

Aegon
quelle
0

Ich bin auf den gleichen Fehler gestoßen, und in meinem Fall war es einfach Project Properties > Maven > Update project, das Projekt aufzurufen und / oder zu reinigen und neu aufzubauen.

Luke Hutchison
quelle
0

Habe gerade meine Test.class über das Eclipse-Menü hinzugefügt und funktioniert. Klicken Sie mit der rechten Maustaste, um zu projizieren -> Neu -> Andere -> JUnit -> JUnit-Testfall

Sou Lee
quelle
0

Dies kann durch die Version von Junit-Plattform-Launcher / Junit-Plattform-Runner verursacht werden.

1.1.0 funktioniert nicht

1.4.1 funktioniert in meinem Setup.

Ich denke, dies ist ein Fehler in Eclipse, da es mit Bibliotheken höherer Versionen von junit und nicht mit anderen Versionen funktioniert.

Dies löste mein Problem. Die andere Entschließung erschien mir weniger machbar oder riskant. Vielen Dank.

Swarup Das
quelle
0

Als ich meine Jupiter-API-Version in die neueste änderte, wurde sie gelöst. In der Zwischenzeit wird bei meinen Eclipse- und anderen Eclipse-Erweiterungsideen (z. B. STS) ein Fehler beim Erstellen des Pfads angezeigt. Ide zwingt mich bei jedem Maven-Update, die JRE-Systembibliothek festzulegen.

Ömer
quelle