Eclipse Aucun test trouvé à l'aide de JUnit 5 causé par NoClassDefFoundError pour LauncherFactory

94

Le problème

Chaque fois que j'exécute mes projets JUnit test (en utilisant JUnit 5 avec Java 9 et Eclipse Oxygen 1.a), je rencontre le problème qu'éclipse ne trouve aucun test.

La description

Dans la configuration d'exécution, eclipse ne peut même pas trouver la méthode qui est annotée avec @Test, mais à la place ne me montre que " (toutes les méthodes) ". J'espère que l'image suivante donne un meilleur aperçu de ma configuration:

https://imgur.com/a/FTe9c

Sortie de la console:

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

Ce que j'ai essayé jusqu'à présent

J'ai déjà essayé

  • pour supprimer le dossier de test du chemin de construction et l'ajouter à nouveau.
  • pour démarrer le test en survolant la méthode annotée avec @Test puis cliquez sur "Exécuter en tant que test JUnit".
  • supprimer JUnit de Buildpath et l'ajouter à nouveau
  • redémarrer eclipse
  • J'ai également déplacé l'ensemble du projet d'une machine à une autre et l'ai essayé avec l'installation d'éclipse fournie.
  • pour renommer la méthode de test.
  • pour retaper l'annotation @Test

Certaines de ces étapes peuvent être trouvées ici , mais à la fin le problème est resté.

ShadowDragon
la source
Mais avez-vous essayé de découvrir la différence comme indiqué dans la réponse à cette question - stackoverflow.com/questions/34413/... ?
Naman

Réponses:

20

Vous avez rencontré le bogue Eclipse 525948 qui a déjà été corrigé et qui sera publié dans la prochaine version Oxygen.3 (4.7.3), le 21 mars 2018.

Pour contourner ce problème, placez votre code de test dans un projet distinct et ajoutez le projet sous test au chemin d'accès au module, mais n'ajoutez pas de module-info.javaà votre projet de test. Avec la dénomination de votre projet, classe et module, cela devrait ressembler à ceci:

entrez la description de l'image ici

Voir aussi ma vidéo qui montre Java 9 et JUnit 5 dans Eclipse Oxygen.1a en action

hurler
la source
1
@nullpointer Je veux créer un nouveau projet Java qui n'est pas modulaire (n'a pas module-info.java). Dans Eclipse, un projet Java a un seul dossier de sortie et pour cela, il ne peut en contenir qu'un ou aucun module-info.java. Mais vous pouvez ajouter des modules au modulepath du projet même si le projet n'est pas modulaire (n'en a pas module-info.java).
hurler
1
@ShadowDragon l'inconvénient de ce hack est que nous avons besoin d'un nom de package différent pour les classes de test, nous ne pouvons donc pas faire de test privé de package
kleopatra
7
Je viens d'installer Oxygen.3 (4.7.3) et le problème persiste.
user118967
2
@chomp Si vous avez 2018-09, c'est un problème différent même si les symptômes se ressemblent. Si aucun test n'a été trouvé, cela est principalement dû à un chemin de classe / module incorrect ( Projet> Propriétés: Chemin de construction Java ).
hurler
2
@howlger Merci. Après la mise à niveau vers la dernière version, ce problème a disparu. Merci encore pour votre aide :).
Datta le
122

J'ai résolu le problème en cliquant avec le bouton droit sur le test et en sélectionnant «Exécuter les configurations» et en modifiant la sélection «Test runner:» en «JUnit 4» comme indiqué ici:

Capture d'écran des configurations d'exécution

J'ai refait le test et cela a fonctionné.

chaîne de caractères
la source
12
C'est drôle que de sélectionner "JUnit4" dans les configurations d'exécution tout en utilisant JUnit5. Je n'appellerai pas cela une bonne solution sur laquelle je peux compter pendant que je travaille sur un grand projet.
Levent Divilioglu
1
Je trouve également cette solution suspecte, elle manque même d'explication sur les raisons pour lesquelles cela fonctionne et les risques que l'on peut prendre.
Amadán
Si cela ne résout pas le problème pour vous, accédez à l'onglet classpath dans la même fenêtre et ajoutez JUnit aux bibliothèques Bootstrap.
Abhi
Merci; la sélection de JUnit 4 a résolu mes problèmes. Pour l'instant, c'est le moyen le plus simple de résoudre le problème.
Tes
A mon avis, cette solution moins invasive, c'est-à-dire sans modifier le code source.
Rafael Rocha le
63

J'ai le même problème avec STS 3.9.1. Cela semble être un bogue Eclipse, cependant, pour résoudre ce problème, vous pouvez ajouter une dépendance de test junit-platform-launcherà votre projet ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )

Voici comment j'ai fait pour mon projet qui utilise 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}"
}

Fichier gradle.properties:

junit5MinorVersion=1.0

Je pense que la même chose s'applique si vous voyez cette exception lors de l'utilisation d'IntelliJ IDEA.

Andrii Karaivanskyi
la source
1
Si vous utilisez gradle, cela passe généralement à build.gradle. Si vous utilisez maven, c'est pom.xml. Le format de maven est cependant différent.
Andrii Karaivanskyi
1
Cela a résolu le problème pour moi. Merci!
Chris
4
Voici l'extrait de code pom.xml pour accéder à <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> < scope> test </scope> </dependency>
user118967
1
L'ajout de junit-platform 1.1.0 n'a pas fonctionné pour moi. Il affiche le même message "Aucun test trouvé avec le lanceur de tests utilisant JUnit 5" "
P Satish Patro
2
@PSatishPatro Après avoir ajouté ce qui précède. Vous devez aller à exécuter la configuration pour ce cas de test Junit, puis aller à l'onglet Chemin de classe-> Avancé-> Ajouter une bibliothèque-> OK-> Junit-> Terminer. Ensuite, lancez-le.Cela ajoutera la bibliothèque lors de l'exécution du Junit
Jaison Varghese
27

Dans mon cas, le problème était moi-même et aucun IDE comme Eclipse. J'ai importé la classe JUnit 4 Test.

Alors n'importez PAS celui-ci:

import org.junit.Test  // JUnit 4

Mais importez celui-là:

import org.junit.jupiter.api.Test // JUnit 5
armin.miedl
la source
Je basculais entre JUnit 4 et 5 parce que le projet actuel utilise JUnit 5, mais lorsque je signale des bogues à Hibernate, etc. Je dois passer à JUnit 4. J'ai fini par mélanger accidentellement les importations. 🤦‍♂️
Kawu
20

Les réponses jusqu'à présent n'ont pas abordé le problème du partage de code avec d'autres personnes qui n'utilisent pas nécessairement Eclipse. Voici une proposition. La clé est d'utiliser un profil maven pour résoudre le cas Eclipse.

Cela suppose que vous avez défini une propriété junit5.versiondans votre pom comme:

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

puis dans la profilessection ajoutez ce qui suit:

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

Tout ce que vous avez à faire après cela est de sélectionner le profil dans votre Eclipse locale: Faites un clic droit sur votre projet et sélectionnez Maven > Select Maven Profiles...(ou appuyez sur Ctrl+ Alt+ P), puis vérifiez le profil "eclipse" que nous venons de créer.

Sélection du profil Maven

Avec cela, vous avez terminé. Votre Eclipse exécutera les tests Junit 5 comme prévu, mais la configuration que vous avez ajoutée ne polluera pas d'autres builds ou autre IDE

Aldian
la source
12

L'ajout de cette dépendance maven avec JUnit Jupiter (v.5.5.1) résout le problème.

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>
hbhattac
la source
J'ai eu un projet JAR créé pour Spring Boot 2.x qui a apporté JUnit 5. J'ai ajouté cette dépendance et il semble l'avoir corrigée. Merci!
David Bradley le
12

CORRECTIF SIMPLE: (Ajouter la bibliothèque JUnit 5)

INSTRUCTIONS:

  • Faites un clic droit sur le projet -> Chemin de construction -> Configurer le chemin de construction
  • Dans le pop-up -> Ajouter une bibliothèque -> JUnit -> JUnit 5 -> Terminer -> Appliquer
  • Vous devriez voir la bibliothèque JUnit 5 (et ses jars) ajoutée à votre projet
  • Faites un clic droit sur le projet -> Maven -> Mettre à jour le projet -> OK
Jerry Carney
la source
9

Aucune des solutions n'a aidé:

Le problème est qu'Eclipse 2018-12 prend en charge JUnit 5.3.1. Si vous le démarrez avec une version antérieure, il échouera.

Assurez-vous donc d'utiliser au moins 5.3.1.

5.4.0 fonctionne aussi.

Si votre pom parent est Spring Boot, vous devez vous assurer (dans la gestion des dépendances) que junit-jupiter-api est défini sur la même version. Vous n'avez pas besoin de junit-platform-runner ou -launcher !

T3rm1
la source
2
Merci pour le conseil. J'utilise 2019-3 et j'ai ajouté une propriété <junit-jupiter.version>5.4.1</junit-jupiter.version>pour remplacer la version utilisée dans Spring boot (2.1.3.RELEASE).
Ritesh
3
C'est celui qui a résolu le problème pour moi. J'ai supprimé la dépendance -launcher et cela a commencé à fonctionner. (éclipse 2019-09 et junit 5.4.2)
Raymond
Cette solution fonctionne aussi pour moi. Cependant, dans mon cas, j'ai changé de 5.3.1 à 5.5.1 et le junit-platform-engine à 1.5.1.
Arwan Khoiruddin
1
Cela a résolu le problème pour moi. Dans eclipse 2020-03, les tests n'ont pas commencé avec la version 5.5.2 de junit mais avec la version 5.6.0. En guise de mise à jour générale pour votre réponse: il peut être nécessaire d'utiliser au moins la version junit utilisée par eclipse.
Lars Briem le
8

Suite à la réponse d'Andrii Karaivanskyi, voici la déclaration 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>

MISE À JOUR

Selon le commentaire d' Alexander Wessel, vous pouvez utiliser org.junit: junit-bom comme décrit dans sa réponse à la question Eclipse Aucun test trouvé en utilisant JUnit 5 causé par NoClassDefFoundError pour LauncherFactory .

Gerold Broser
la source
1
Ne déclarez pas de propriétés pour les versions Jupiter et Platform, utilisez plutôt la nomenclature . En gros, ajoutez une dépendance à la nomenclature dans la balise dependencyManagement avec scope=import type=pom, puis ajoutez des dépendances à junit-platform-launcher et junit-jupiter-engine dans la portée de test, sans donner de version dans la section dépendances. La nomenclature garantira toujours que vous n'avez qu'une seule version de JUnit Platform et Jupiter sur le chemin de classe, et que les versions respectives sont celles prévues (par exemple 5.2.0 avec 1.2.0).
Alexander Wessel
@AlexanderWessel Je n'ai pas de nomenclature. Ceci est juste un exemple d'extrait des dépendances à déclarer avec Maven, où que ce soit.
Gerold Broser
1
ce n'est pas que vous ayez (ou plutôt que votre projet ait) une nomenclature elle-même. J'expliquais qu'en important la nomenclature fournie par JUnit 5 , vous pouvez vous assurer que les versions Junit Jupiter et Junit Platform sont compatibles, et vous n'aurez pas besoin de déclarer une version dans les dépendances individuelles, donc plus besoin de déclarer la version Propriétés. Pour être clair: Votre exemple ne fonctionnera bien. Mais l'importation de la nomenclature JUnit est un peu plus élégante (à mon humble avis) et, dans certaines circonstances, plus sûre.
Alexander Wessel
7

Pour info, une autre cause de "Aucun test détecté avec junit5" est (par inadvertance ou intentionnellement) de déclarer les cas de test "privés":

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

Ils doivent être publics.

Mike B
la source
5

J'ai également rencontré le même problème, il vous suffit d'ajouter la bibliothèque, la bibliothèque Junit est déjà fournie avec Eclipse, il vous suffit donc de suivre ci-dessous

Chemin de construction> Configurer le chemin de construction> bibliothèque> Ajouter une bibliothèque> JUnit> Suivant> terminer

Ça marche pour moi

Alok Ranjan
la source
Cela a bien fonctionné en éclipse. Version: 2020-06 (4.16.0) ID de build: 20200615-1200
OJVM
4

Dès le début, le message d'erreur vous indique que la classe n'est pas trouvée: NoClassDefFoundErrorcela signifie que le PATH to junit est le problème.

  1. Appuyez avec le bouton droit sur le dossier du projet et choisissez Propriétés OU sélectionnez le dossier du projet et appuyez sur la combinaison cmd + i.

  2. sélectionnez dans la liste "Java Build Path".

  3. sélectionnez l'onglet "Bibliothèques"
  4. Si JUnit 5 (ou JUnit 4) est ajouté à "Modulepath", sélectionnez le "JUnit 5" et appuyez sur Supprimer.
  5. sélectionnez "Classpath", appuyez sur "Add Library ...".
  6. à partir de la fenêtre "Ajouter une bibliothèque" ouverte, sélectionnez JUnit, appuyez sur Suivant.
  7. Sélectionnez la version de la bibliothèque JUnit dont vous avez besoin et appuyez sur Terminer.

C'est tout. Essayez à nouveau d'exécuter le test.

Ion Timotine
la source
4

tu devrais savoir ça :

@Before de junit4 va avec @Test: " import org.junit.Test "

ET

@BeforeEach de Junit5 va avec: " import org.junit.jupiter.api.Test "

alors assurez-vous que vous utilisez les importations de la même version de Junit, sinon cela ne fonctionnera pas, je suppose.

Y.halaoui
la source
3

En utilisant STS 3.9.1 j'ai eu le même problème. Cependant, actuellement je n'ai pas besoin de nouvelles fonctionnalités JUnit5, j'ai donc essayé de forcer l'utilisation d'une version plus ancienne. Si vous utilisez maven, vous pouvez ajouter les dépendances suivantes à votre 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>

Cela a fait l'affaire pour moi (du moins tant que je n'ai pas besoin de JUnit5 explicitement).

mahe
la source
Pourquoi avez-vous ajouté "org.junit.vintage" si vous utilisez JUnit5? C'est uniquement pour la compatibilité ascendante (comme l'utilisation de l'ancien JUnit) AFAIK.
Levent Divilioglu
Parce qu'avec ce projet et STS 3.9.1 je ne pourrais pas / n'ai pas utilisé JUnit5 mais JUnit4.
mahe
3

J'ai eu le même problème après avoir créé un nouveau TestCase: Eclipse -> New -> JUnit Test Case. Il crée une classe sans modificateur de niveau d'accès. Je pourrais résoudre le problème en mettant simplement un public avant le mot - clé class .

du-it
la source
La classe et la méthode nécessitent un mot clé public. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi
3

Comme tout le monde l'a informé que c'était un bogue IDE, j'ai essayé Eclipseet STS. Dans les deux cas, il échoue.

Pour contourner le problème, j'ai corrigé en modifiant le fichier pom.xml comme ci-dessous.

J'ai ajouté ces deux dépendances maven junit-jupiter-engineet 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>

Assurez-vous également d'ajouter la version des deux dépendances maven dans la balise properties.

<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
la source
1
L'ajout de la dépendance junit-platform-launcher a résolu le problème pour moi. Merci
Venkatesh Manohar
3

J'utilise eclipse 2019-09.

J'ai dû mettre à jour la version junit-bom vers au moins 5.4.0. J'avais auparavant 5.3.1 et cela a causé les mêmes symptômes de l'OP.

Ma config est maintenant:

    <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>
Bosse
la source
une autre option est d'ajouter <junit-jupiter.version> 5.4.0 </junit-jupiter.version> aux propriétés pom
Uri Loya
2

Puisqu'il n'est pas possible de publier des blocs de code dans les commentaires, voici le modèle POM que j'utilise dans les projets nécessitant JUnit 5. Cela permet de construire et de "Exécuter en tant que test JUnit" dans Eclipse et de construire le projet avec Maven ordinaire.

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

Vous pouvez voir que maintenant, vous ne devez mettre à jour la version qu'à un seul endroit si vous souhaitez mettre à jour JUnit. De plus, le numéro de version de la plate-forme n'a pas besoin d'apparaître (dans une version compatible) n'importe où dans votre POM, il est automatiquement géré via l' junit-bomimportation.

Alexander Wessel
la source
2

J'utilise:

Spring Tool Suite 4 Version: 4.4.2.RELEASE ID de build: 201911201053 Version Java: 1.8.0_191

et le message affiché est Aucun test trouvé avec le lanceur de test 'JUnit5'

ce qui a fonctionné pour moi était la configuration ci-dessous

    <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
la source
2

Il vous manque le lanceur de plate-forme JUnit 5 avec le groupe: 'org.junit.platform', nom: 'junit-platform-launcher'

Ajoutez simplement votre POM:

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

Même erreur que j'ai rencontrée dans la version éclipse Oxygen.3a Release (4.7.3a). Il y a un problème dans l'incompatibilité des dépendances Maven.Pour résoudre, j'ai mis à jour mon Pom.xml avec les dépendances suivantes.

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
la source
Avez-vous vu le guide de l'utilisateur de JUnit 5 concernant junit-platform-runner: " Runner pour exécuter des tests et des suites de tests sur la plate-forme JUnit dans un environnement JUnit 4. "
Gerold Broser
1

Vous ne pouvez utiliser que junit-jupitercomme une dépendance de test au lieu de 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
la source
1
Cette solution a fonctionné pour moi avec JUnit 5.6.2, Java 11 (et eclipse 2020-03 / 4.15.0)
coseos
1

Pour moi, j'ai configuré le chemin de construction pour ajouter la bibliothèque JUnit 5 et aussi en ajoutant la dépendance

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

séparément.

Dineshotham Kumar Khambhammett
la source
1

J'ai également rencontré ce problème avec Eclipse (Version: 2019-12 (4.14.0)). La solution semble soit utiliser IntelliJ, soit utiliser le test Maven pour exécuter de tels tests dans Eclipse.

Srini Ramjee
la source
1

J'ai utilisé en fait spring-tool-suite-4-4.5.1 et j'ai eu ce bogue lorsque je veux exécuter une classe de test. et la solution était d'ajouter à 'java build path', 'junit5' dans les bibliothèques java build path img

fatima fahmi
la source
0

tu devrais changer

@Test
public static void testmethod(){}

à

@Test
public void testmethod(){}

la méthode @Test n'est pas compatible avec la statique

Aegon
la source
0

J'ai rencontré la même erreur, et dans mon cas, c'était une simple question d'aller Project Properties > Maven > Update projectet / ou de nettoyer et de reconstruire le projet.

Luke Hutchison
la source
0

Je viens d'ajouter mon Test.class via le menu éclipse et j'ai travaillé. Faites un clic droit pour projeter -> Nouveau -> Autre -> JUnit -> JUnit Test Case

Sou Lee
la source
0

Cela peut être causé par la version de junit-platform-launcher / junit-platform-runner.

1.1.0 ne fonctionne pas

1.4.1 fonctionne dans ma configuration.

Je pense que c'est un bogue dans eclipse car il fonctionne avec des bibliothèques de versions supérieures de junit et pas avec une autre version.

Cela a résolu mon problème. L'autre résolution me paraissait moins faisable ou risquée. Merci.

Swarup Das
la source
0

Lorsque je change ma version de jupiter api en la dernière, cela a été résolu. Pendant ce temps, mon eclipse et d'autres idées d'extensions d'éclipse (telles que STS) obtiennent une erreur de chemin de construction. Pour chaque mise à jour de maven, ide m'oblige à définir la bibliothèque système JRE.

Ömer
la source