Eclipse Nie znaleziono testów używających JUnit 5 spowodowanych przez NoClassDefFoundError for LauncherFactory

94

Problem

Za każdym razem, gdy uruchamiam test JUnit moich projektów (używając JUnit 5 z Javą 9 i Eclipse Oxygen 1.a) napotykam problem polegający na tym, że eclipse nie może znaleźć żadnych testów.

Opis

W konfiguracji uruchamiania eclipse nie może nawet znaleźć metody, która jest oznaczona adnotacją @Test, a zamiast tego pokazuje mi tylko „ (wszystkie metody) ”. Mam nadzieję, że poniższy obraz daje lepsze spojrzenie na moją konfigurację:

https://imgur.com/a/FTe9c

Wyjście konsoli:

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

Czego próbowałem do tej pory

Już próbowałem

  • aby usunąć folder testowy ze ścieżki budowania i dodać go ponownie.
  • aby rozpocząć test od najechania kursorem na metodę z adnotacją @Test, a następnie kliknij „Uruchom jako test JUnit”.
  • usuń JUnit z Buildpath i dodaj go ponownie
  • uruchom ponownie zaćmienie
  • Przeniosłem również cały projekt z jednej maszyny na inną i wypróbowałem go z dostarczoną tam instalacją eclipse
  • aby zmienić nazwę metody badawczej.
  • aby ponownie wpisać adnotację @Test

Niektóre z tych kroków można znaleźć tutaj , ale ostatecznie problem pozostał.

Smok Cienia
źródło
Ale czy próbowałeś znaleźć różnicę, jak podano w odpowiedzi na to - stackoverflow.com/questions/34413/… ?
Naman

Odpowiedzi:

20

Ty wpadł Eclipse bug 525948 , która została już ustalona, a które zostaną opublikowane w nadchodzącym wydaniu Oxygen.3 (4.7.3), 21 marca 2018 r.

Aby obejść ten problem , umieść kod testowy w oddzielnym projekcie i dodaj testowany projekt do ścieżki modulepath, ale nie dodawaj a module-info.javado projektu testowego. Z nazewnictwem projektu, klasy i modułu powinno wyglądać mniej więcej tak:

wprowadź opis obrazu tutaj

Zobacz także mój film, który przedstawia Javę 9 i JUnit 5 w Eclipse Oxygen.1a w akcji

wycie
źródło
1
@nullpointer Mam na myśli stworzenie nowego projektu Java, który nie jest modułowy (nie ma module-info.java). W Eclipse projekt Java ma jeden folder wyjściowy i dlatego może zawierać tylko jeden folder lub żaden module-info.java. Ale możesz dodać moduły do ​​ścieżki modularnej projektu, nawet jeśli projekt nie jest modułowy (nie ma module-info.java).
howlger
1
@ShadowDragon Wadą tego hacka jest to, że potrzebujemy innej nazwy pakietu dla klas testowych, dlatego nie możemy przeprowadzić testów prywatnych pakietów
kleopatra
7
Właśnie zainstalowałem Oxygen.3 (4.7.3) i problem nadal występuje.
user118967
2
@chomp Jeśli masz 2018-09, to inny problem, nawet jeśli objawy wyglądają podobnie. Jeśli nie znaleziono testów, jest to głównie spowodowane nieprawidłową ścieżką klasy / ścieżką modułu ( Projekt> Właściwości: Ścieżka budowania języka Java ).
howlger
2
@howlger Thanks. Po aktualizacji do najnowszej wersji ten problem zniknął. Jeszcze raz dziękuję za pomoc :).
Datta
121

Rozwiązałem problem, klikając prawym przyciskiem myszy test i wybierając „Uruchom konfiguracje” i zmieniając opcję „Test runner:” na „JUnit 4”, jak pokazano poniżej:

Zrzut ekranu konfiguracji uruchamiania

Przeprowadziłem test ponownie i zadziałał.

stringVector
źródło
12
To zabawne, że wybranie „JUnit4” w konfiguracjach uruchamiania podczas korzystania z JUnit5. Nie nazwałbym tego dobrym rozwiązaniem, na którym mogę polegać, mając do czynienia z dużym projektem.
Levent Divilioglu
1
To rozwiązanie również uważam za podejrzane, brakuje nawet wyjaśnienia, dlaczego to działa i jakie ryzyko można podjąć.
Amadán
Jeśli wykonanie tego nie rozwiązało problemu, przejdź do zakładki ścieżki klas w tym samym oknie i dodaj JUnit do bibliotek Bootstrap.
Abhi
Dzięki; wybranie JUnit 4 rozwiązało moje problemy. Na razie jest to najprostszy sposób rozwiązania problemu.
Tes
Moim zdaniem to mniej inwazyjne rozwiązanie, czyli bez modyfikowania kodu źródłowego.
Rafael Rocha
63

Mam ten sam problem z STS 3.9.1. Wygląda na to, że jest to błąd Eclipse, jednak aby to naprawić, możesz dodać testową zależność junit-platform-launcherdo swojego projektu ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )

Oto jak zrobiłem dla mojego projektu, który używa 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}"
}

Plik gradle.properties:

junit5MinorVersion=1.0

Uważam, że to samo dotyczy sytuacji, gdy widzisz ten wyjątek podczas korzystania z IntelliJ IDEA.

Andrii Karaivanskyi
źródło
1
Jeśli używasz gradle, zwykle idzie do build.gradle. Jeśli używasz maven, to jest pom.xml. Jednak format maven jest inny.
Andrii Karaivanskyi
1
To naprawiło to dla mnie. Dzięki!
Chris,
4
Oto fragment pom.xml do przejścia do środka <dependencies>: <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> < zakres> test </scope> </dependency>
user118967
1
Nadal dodawanie junit-platform 1.1.0 nie działa dla mnie. Wyświetla ten sam komunikat „Nie znaleziono testów z uruchomieniem testowym używającym JUnit 5”
P Satish Patro
2
@PSatishPatro Po dodaniu powyższego. Musisz przejść do uruchomienia konfiguracji dla tego przypadku testowego Junit, a następnie przejść do zakładki Classpath-> Advanced-> Add Library-> OK-> Junit-> Finish. Następnie idź dalej i uruchom to, co spowoduje dodanie biblioteki podczas realizacji Junit
Jaison Varghese
26

W moim przypadku problemem byłam ja, a nie IDE takie jak Eclipse. Zaimportowałem klasę JUnit 4 Test.

Więc NIE importuj tego:

import org.junit.Test  // JUnit 4

Ale zaimportuj to:

import org.junit.jupiter.api.Test // JUnit 5
armin.miedl
źródło
Przełączałem się między JUnit 4 i 5, ponieważ obecny projekt używa JUnit 5, ale podczas zgłaszania błędów do Hibernate itp. Muszę przełączyć się na JUnit 4. Skończyło się na przypadkowym pomieszaniu importu. 🤦‍♂️
Kawu
20

Dotychczasowe odpowiedzi nie dotyczyły problemu udostępniania kodu innym osobom, które niekoniecznie używają Eclipse. Oto jedna propozycja. Kluczem jest użycie profilu mavena do rozwiązania sprawy Eclipse.

Zakłada się, że zdefiniowałeś właściwość junit5.versionw swoim pom, na przykład:

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

następnie w profilessekcji dodaj:

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

Następnie wystarczy wybrać profil w swoim lokalnym Eclipse: Kliknij prawym przyciskiem myszy swój projekt i wybierz Maven > Select Maven Profiles...(lub naciśnij Ctrl+ Alt+ P), a następnie zaznacz utworzony przez nas profil „eclipse”.

Wybór profilu Maven

To wszystko. Twoje Eclipse przeprowadzi testy Junit 5 zgodnie z oczekiwaniami, ale dodana konfiguracja nie zanieczyszcza innych kompilacji ani innego środowiska IDE

Aldian
źródło
12

Dodanie tej zależności maven za pomocą JUnit Jupiter (v.5.5.1) rozwiązuje problem.

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>
hbhattac
źródło
Miałem projekt JAR utworzony dla Spring Boot 2.x, który przyniósł JUnit 5. Dodałem tę zależność i wygląda na to, że naprawiła ją. Dzięki!
David Bradley
12

PROSTA POPRAWKA: (Dodaj bibliotekę JUnit 5)

INSTRUKCJE:

  • Kliknij prawym przyciskiem myszy projekt -> Build Path -> Configure Build Path
  • W wyskakującym okienku -> Dodaj bibliotekę -> JUnit -> JUnit 5 -> Zakończ -> Zastosuj
  • Powinieneś zobaczyć bibliotekę JUnit 5 (i jej słoiki) dodaną do twojego projektu
  • Kliknij prawym przyciskiem myszy projekt -> Maven -> Aktualizuj projekt -> OK
Jerry Carney
źródło
9

Żadne z rozwiązań nie pomogło:

Problem w tym, że Eclipse 2018-12 ma wsparcie dla JUnit 5.3.1. Jeśli uruchomisz go z wcześniejszą wersją, zakończy się niepowodzeniem.

Więc upewnij się, że używasz co najmniej 5.3.1.

5.4.0 też działa.

W przypadku, gdy Twoim rodzicielskim pom jest Spring Boot, musisz upewnić się (w zarządzaniu zależnościami), że junit-jupiter-api jest ustawiony na tę samą wersję. Nie potrzebujesz junit-platform-runner ani -launcher !

T3rm1
źródło
2
Dzięki za wskazówkę. Używam 2019-3 i dodałem właściwość, <junit-jupiter.version>5.4.1</junit-jupiter.version>aby zastąpić wersję używaną w Spring boot (2.1.3.RELEASE).
Ritesh
3
To był ten, który naprawił to dla mnie. Usunąłem zależność -launcher i zaczęło działać. (zaćmienie 2019-09 i junit 5.4.2)
Raymond
To rozwiązanie działa również u mnie. Jednak w moim przypadku zmieniłem z 5.3.1 na 5.5.1, a silnik platformy junit na 1.5.1.
Arwan Khoiruddin
1
To naprawiło to dla mnie. W Eclipse 2020-03 testy nie rozpoczęły się od wersji junit 5.5.2, ale od 5.6.0. W ramach ogólnej aktualizacji Twojej odpowiedzi może być konieczne użycie przynajmniej wersji junit, której używa eclipse.
Lars Briem
8

Zgodnie z odpowiedzią Andrii Karaivanskyi, oto deklaracja Maven 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>

AKTUALIZACJA

Zgodnie z komentarzem Alexandra Wessela możesz użyć org.junit: junit-bom, jak opisano w jego odpowiedzi na pytanie Eclipse Nie znaleziono testów przy użyciu JUnit 5 spowodowanych przez NoClassDefFoundError dla LauncherFactory .

Gerold Broser
źródło
1
Nie deklaruj właściwości dla wersji Jupiter i platformy, zamiast tego użyj BOM . Zasadniczo dodaj zależność do BOM w tagu dependencyManagement z scope=import type=pom, a następnie dodaj zależności do junit-platform-launcher i junit-jupiter-engine w zakresie testowym, bez podawania wersji w sekcji zależności. BOM zawsze zapewni, że masz tylko jedną wersję platformy JUnit i Jupitera na ścieżce klas oraz że odpowiednie wersje są zgodne z przeznaczeniem (np. 5.2.0 z 1.2.0).
Alexander Wessel
@AlexanderWessel Nie mam BOM. To tylko przykładowy fragment zależności, które trzeba zadeklarować za pomocą Mavena, gdziekolwiek by to nie było.
Gerold Broser
1
nie oznacza to, że masz (a raczej twój projekt ma) sam BOM. Tłumaczyłem, że importując BOM, który dostarcza JUnit 5 , możesz upewnić się, że wersje Junit Jupiter i Junit Platform są kompatybilne i nie musisz deklarować wersji w poszczególnych zależnościach, dzięki czemu nie musisz już deklarować wersji nieruchomości. Żeby było jasne: Twój przykład nie działać prawidłowo. Ale import JUnit BOM jest nieco bardziej elegancki (moim skromnym zdaniem) i, w pewnych okolicznościach, bezpieczniejszy.
Alexander Wessel,
7

Do Twojej wiadomości, kolejną przyczyną „Nie znaleziono testów przy użyciu junit5” jest (nieumyślnie lub celowo) deklarowanie przypadków testowych jako „prywatnych”:

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

Muszą być publiczne.

Mike B.
źródło
5

Spotkałem się również z tym samym problemem, który wystarczy dodać bibliotekę, Junit Library jest już dostarczana wraz z Eclipse, więc wystarczy wykonać poniższe czynności

Ścieżka budowania> Konfiguruj ścieżkę budowania> biblioteka> Dodaj bibliotekę> JUnit> Dalej> zakończ

Mi to pasuje

Alok Ranjan
źródło
Działa dobrze w zaćmieniu. Wersja: 2020-06 (4.16.0) Identyfikator kompilacji: 20200615-1200
OJVM
4

Od początku komunikat o błędzie informuje, że klasa nie została znaleziona: NoClassDefFoundErroroznacza to, że problem stanowi PATH do junit.

  1. Naciśnij prawy przycisk myszy, aby przejść do folderu projektu i wybierz opcję Właściwości LUB wybierz folder projektu i naciśnij kombinację cmd + i.

  2. wybierz z listy „Java Build Path”.

  3. wybierz zakładkę „Biblioteki”
  4. Jeśli JUnit 5 (lub JUnit 4) jest dodany do „Modulepath”, wybierz „JUnit 5” i naciśnij Usuń.
  5. wybierz „Ścieżka klas”, naciśnij „Dodaj bibliotekę ...”.
  6. z otwartego okna „Dodaj bibliotekę” wybierz JUnit i naciśnij dalej.
  7. Wybierz potrzebną wersję biblioteki JUnit i naciśnij Zakończ.

To wszystko. Spróbuj ponownie uruchomić test.

Ion Timotin
źródło
4

powinieneś to wiedzieć :

@Before from junit4 idzie z @Test: " import org.junit.Test "

I

@BeforeEach z Junit5 idzie z: „ import org.junit.jupiter.api.Test

więc upewnij się, że używasz importu z tej samej wersji Junita, w przeciwnym razie myślę, że nie zadziała.

Y.halaoui
źródło
3

Używając STS 3.9.1 mam ten sam problem. Jednak obecnie nie potrzebuję żadnych nowych funkcji JUnit5, więc próbowałem wymusić użycie starszej wersji. Jeśli używasz maven, możesz dodać następujące zależności do swojego 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>

To załatwiło sprawę (przynajmniej tak długo, jak nie potrzebuję jawnie JUnit5).

mahe
źródło
Dlaczego dodałeś „org.junit.vintage”, jeśli używasz JUnit5? Jest to tylko dla kompatybilności wstecznej (jak przy użyciu starego JUnit) AFAIK.
Levent Divilioglu
Ponieważ z tym projektem i STS 3.9.1 nie mogłem / nie użyłem JUnit5, ale JUnit4.
mahe
3

Ten sam problem mam po utworzeniu nowego TestCase: Eclipse -> New -> JUnit Test Case. Tworzy klasę bez modyfikatora poziomu dostępu. Mogę rozwiązać problem, umieszczając po prostu public przed słowem kluczowym class .

du-it
źródło
Zarówno klasa, jak i metoda wymagały publicznego słowa kluczowego. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi
3

Jak wszyscy informowali, że to błąd IDE, spróbowałem Eclipsei STS. W obu przypadkach zawodzi.

W ramach obejścia naprawiłem, modyfikując plik pom.xml, jak poniżej.

Dodałem te dwie zależności maven junit-jupiter-engineijunit-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>

Upewnij się również, że w tagu properties dodano wersję obu zależności 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>
Arvind Katte
źródło
1
Dodanie zależności junit-platform-launcher rozwiązało problem. Dzięki
Venkatesh Manohar
3

Używam Eclipse 2019-09.

Musiałem zaktualizować wersję junit-bom do co najmniej 5.4.0. Wcześniej miałem 5.3.1 i to spowodowało te same objawy PO.

Moja konfiguracja to teraz:

    <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>
Guzek
źródło
inną opcją jest dodanie <junit-jupiter.version> 5.4.0 </junit-jupiter.version> do właściwości pom
Uri Loya
2

Ponieważ nie jest możliwe umieszczanie bloków kodu w komentarzach, oto szablon POM, którego używam w projektach wymagających JUnit 5. Pozwala to na budowanie i „uruchamianie jako JUnit Test” w Eclipse i budowanie projektu w zwykłym 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>

Widzisz, że teraz musisz zaktualizować wersję tylko w jednym miejscu, jeśli chcesz zaktualizować JUnit. Ponadto numer wersji platformy nie musi pojawiać się (w kompatybilnej wersji) w dowolnym miejscu w POM, jest on automatycznie zarządzany poprzez junit-bomimport.

Alexander Wessel
źródło
2

Używam:

Spring Tool Suite 4 Wersja: 4.4.2.RELEASE identyfikator kompilacji: 201911201053 Wersja Java: 1.8.0_191

a wyświetlany komunikat to Nie znaleziono testów z programem uruchamiającym testy „JUnit5”

co mi zadziałało to konfiguracja poniżej

    <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
źródło
2

Brakuje programu uruchamiającego platformę JUnit 5 z grupą: „org.junit.platform”, nazwa: „junit-platform-launcher”

Po prostu dodaj swój POM:

<dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-launcher</artifactId>
    </dependency>
Ravi Ranjan
źródło
1

Ten sam błąd napotkałem w wersji zaćmienia Oxygen.3a Release (4.7.3a). Wystąpił problem z niezgodnością Maven Dependencies.Aby rozwiązać, zaktualizowałem plik Pom.xml o następujące zależności.

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
źródło
Czy widziałeś Podręcznik użytkownika JUnit 5 dotyczący junit-platform-runner: „ Runner do wykonywania testów i zestawów testów na platformie JUnit w środowisku JUnit 4.
Gerold Broser,
1

Można używać tylko junit-jupiterjako zależność testowej zamiast 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
źródło
1
To rozwiązanie działało dla mnie z JUnit 5.6.2, Java 11 (i eclipse 2020-03 / 4.15.0)
coseos
1

U mnie skonfigurowałem ścieżkę kompilacji, aby dodać bibliotekę JUnit 5, a także przez dodanie zależności

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

oddzielnie.

Dineshotham Kumar Khambhammett
źródło
1

Napotkałem ten problem również z Eclipse (wersja: 2019-12 (4.14.0)). Wydaje się, że rozwiązanie wykorzystuje IntelliJ lub test Maven do uruchamiania takich testów w Eclipse.

Srini Ramjee
źródło
1

Właściwie użyłem spring-tool-suite-4-4.5.1 i miałem ten błąd, gdy chciałem uruchomić klasę testową. a rozwiązaniem było dodanie do „ścieżki budowania java”, „junit5” w Bibliotekach ścieżki budowania java img

fatima fahmi
źródło
0

powinieneś się zmienić

@Test
public static void testmethod(){}

do

@Test
public void testmethod(){}

@Test nie obsługuje statycznej metody

Aegon
źródło
0

Napotkałem ten sam błąd, aw moim przypadku była to prosta sprawa przejścia do Project Properties > Maven > Update projecti / lub czyszczenia i przebudowy projektu.

Luke Hutchison
źródło
0

Właśnie dodałem mój Test.class za pośrednictwem menu zaćmienia i działało. Kliknij prawym przyciskiem myszy projekt -> Nowy -> Inne -> JUnit -> JUnit Test Case

Sou Lee
źródło
0

Może to być spowodowane wersją junit-platform-launcher / junit-platform-runner.

1.1.0 nie działa

1.4.1 działa w mojej konfiguracji.

Myślę, że jest to błąd w eclipse, ponieważ działa z bibliotekami wyższych wersji junit, a nie inną wersją.

To rozwiązało mój problem. Drugie rozwiązanie wydawało mi się mniej wykonalne lub ryzykowne. Dzięki.

Swarup Das
źródło
0

Kiedy zmieniłem moją wersję Jupiter API na najnowszą, problem został rozwiązany. W międzyczasie moje eclipse i inne idi rozszerzenia eclipse (takie jak STS) otrzymują błąd ścieżki kompilacji. Przy każdej aktualizacji mavena ide zmusza mnie do ustawienia biblioteki systemowej JRE.

Ömer
źródło