Eclipse Aucun test trouvé en utilisant JUnit 5 causé par NoClassDefFoundError
Le problème
Chaque fois que j'exécute mes projets de test JUnit (en utilisant JUnit 5 avec Java 9 et de l'Éclipse de l'Oxygène 1.a) je rencontre le problème que eclipse ne trouve pas de tests.
La description
En vertu de la configuration d'exécution, eclipse ne pouvez même pas trouver la méthode qui est annotée avec @Test, mais au lieu de cela ne montre-moi "(toutes méthodes)".
L'image ci-dessous, espérons-le, donne une meilleure glimps de mon installation:
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 retirer le dossier de test de build path et l'ajouter à nouveau.
- pour commencer le test avec planant au-dessus de la méthode annotée avec @Test, puis cliquez sur "Exécuter en tant qu'JUnit Test".
- supprimer JUnit de Buildpath et l'ajouter à nouveau
- redémarrer eclipse
- J'ai aussi déplacé le projet d'ensemble du projet à partir d'une machine à l'autre et il a essayé avec l'éclipse de l'installation il y
- pour renommer une méthode de test.
- à retaper l'annotation @Test
Certaines de ces étapes peuvent être trouvés icimais à la fin, le problème demeure.
source d'informationauteur ShadowDragon
Vous devez vous connecter pour publier un commentaire.
Vous avez couru dans Eclipse bug 525948 qui a déjà été fixé et qui sera publié dans la prochaine version de l'Oxygène.3 (4.7.3), le 21 Mars 2018.
Comme solution de contournement, mettre votre code de test dans un projet distinct et ajouter le projet en cours de test à la modulepath, mais ne pas ajouter un
module-info.java
de votre projet de test. Avec votre projet, la classe et le module de nommage, il devrait ressembler à quelque chose comme ceci:Voir aussi ma vidéo qui montre Java 9 et JUnit 5 en Éclipse de l'Oxygène.1a en action
J'ai le même problème avec STS 3.9.1. Il semble comme une Éclipse de bug, cependant, pour corriger cela, vous pouvez ajouter un test de dépendance
junit-platform-launcher
à votre projet (https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher)Voilà comment j'ai fait pour mon projet qui utilise gradle:
gradle.fichier de propriétés:
Je crois que la même chose s'applique si vous voyez cette exception lors de l'utilisation IntelliJ IDEA.
J'ai résolu le problème par un clic droit de la tester et de sélectionner "Run Configurations" et changer le "testeur:" sélection de "JUnit 4', comme illustré ici:
Capture d'écran de la course configruations
J'ai couru de nouveau le test et ça a fonctionné.
Réponses jusqu'à présent n'a pas d'adresse le problème de partage de code avec d'autres personnes qui ne sont pas forcément d'utiliser Eclipse. Voici une proposition. La clé est d'utiliser un profil maven pour résoudre l'Éclipse Cas.
Il suppose que vous avez défini une propriété
junit5.version
dans votre pom comme:puis dans le
profiles
section ajouter les éléments suivants:Tout ce que vous avez à faire, après c'est de choisir le profil de votre local Eclipse: clic Droit sur votre projet et sélectionnez
Maven > Select Maven Profiles...
(ou appuyez sur Ctrl + Alt + P), puis cochez la case "eclipse" profil que nous venons de créer.Avec qui vous sont faites. Votre Eclipse va exécuter Junit 5 tests comme prévu, mais la configuration que vous avez ajouté de ne pas polluer les autres compilations ou d'autres IDE
À l'aide de STS 3.9.1 j'ai eu le même problème. Toutefois, actuellement, je n'ai pas besoin de tout nouveau JUnit5 fonctionnalités, donc j'ai essayé de forcer l'utilisation d'une version antérieure. Si vous utilisez maven, vous pouvez ajouter des dépendances suivantes à votre pom.xml:
Cela a fonctionné pour moi (au moins tant que je n'ai pas besoin de JUnit5 explicitement).
J'ai eu le même problème après la création d'un nouveau cas de test: Eclipse -> New -> Test JUnit. Il crée une classe sans niveau d'accès de modification. J'ai pu résoudre le problème simplement en mettant un public avant la classe mot-clé.
Pour info, une autre cause de "Pas de tests trouvés à l'aide de junit5" est (accidentellement ou intentionnellement) le fait de déclarer les cas de test "privé":
Ils ont besoin d'être public.