J'utilise JUnit depuis le début de ce projet et tout fonctionne correctement. J'ai quelques centaines de tests et bien sûr, ici et là, je les lance tous. Faites un clic droit sur le dossier de test racine, exécutez (ou mettez au point) avec JUnit. Mais depuis hier, quand je fais ça, le résultat est:
Process finished with exit code 0
sans commencer aucun des tests. La même chose est avec n'importe quel dossier dans l'arborescence de dossiers. Je peux toujours exécuter un seul cours de test, mais il me faut vraiment une option pour tous les démarrer. Si vous avez des idées, veuillez les déposer ici.
Voici ce qui est enregistré lorsque j'essaie d'exécuter des tests:
2012-10-31 15:16:55,693 [2727217] ERROR - ij.psi.impl.source.PsiFileImpl - IntelliJ IDEA 11.1.2 Build #IU-117.418
2012-10-31 15:16:55,693 [2727217] ERROR - ij.psi.impl.source.PsiFileImpl - JDK: 1.6.0_31
2012-10-31 15:16:55,693 [2727217] ERROR - ij.psi.impl.source.PsiFileImpl - VM: Java HotSpot(TM) Client VM
2012-10-31 15:16:55,693 [2727217] ERROR - ij.psi.impl.source.PsiFileImpl - Vendor: Sun Microsystems Inc.
2012-10-31 15:16:55,693 [2727217] ERROR - ij.psi.impl.source.PsiFileImpl - OS: Windows 7
2012-10-31 15:16:55,693 [2727217] ERROR - ij.psi.impl.source.PsiFileImpl - Last Action: RunClass
2012-10-31 15:16:55,693 [2727217] ERROR - m.intellij.util.ExecutorsQuery - com.intellij.psi.tree.IFileElementType cannot be cast to com.intellij.psi.tree.IStubFileElementType
Java.lang.ClassCastException: com.intellij.psi.tree.IFileElementType cannot be cast to com.intellij.psi.tree.IStubFileElementType
at com.intellij.psi.impl.source.PsiFileImpl.calcStubTree(PsiFileImpl.Java:976)
at com.intellij.psi.stubs.StubIndexImpl$1.perform(StubIndexImpl.Java:239)
at com.intellij.psi.stubs.StubIndexImpl$1.perform(StubIndexImpl.Java:220)
at com.intellij.util.indexing.ValueContainer.forEach(ValueContainer.Java:60)
at com.intellij.psi.stubs.StubIndexImpl.process(StubIndexImpl.Java:220)
at com.intellij.psi.stubs.StubIndexImpl.get(StubIndexImpl.Java:194)
at com.intellij.psi.stubs.AbstractStubIndex.get(AbstractStubIndex.Java:33)
at com.intellij.psi.impl.Java.stubs.index.JavaAnnotationIndex.get(JavaAnnotationIndex.Java:47)
at com.intellij.psi.impl.search.AnnotatedElementsSearcher.a(AnnotatedElementsSearcher.Java:93)
at com.intellij.psi.impl.search.AnnotatedElementsSearcher.execute(AnnotatedElementsSearcher.Java:44)
at com.intellij.psi.impl.search.AnnotatedElementsSearcher.execute(AnnotatedElementsSearcher.Java:28)
at com.intellij.util.ExecutorsQuery.processResults(ExecutorsQuery.Java:42)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.Java:67)
at com.intellij.util.InstanceofQuery.forEach(InstanceofQuery.Java:54)
at com.intellij.execution.ConfigurationUtil.addAnnotatedMethodsAnSubclasses(ConfigurationUtil.Java:97)
at com.intellij.execution.ConfigurationUtil.findAllTestClasses(ConfigurationUtil.Java:77)
at com.intellij.execution.junit.TestPackage$MySearchForTestsTask.run(TestPackage.Java:397)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.Java:469)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.Java:178)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.Java:218)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.Java:169)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$8.run(ProgressManagerImpl.Java:378)
at com.intellij.openapi.application.impl.ApplicationImpl$6.run(ApplicationImpl.Java:434)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:441)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
at Java.lang.Thread.run(Thread.Java:662)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.Java:145)
OK, je l'ai corrigé.
Dans le menu, sous Fichier, il existe une option d’invalidation du cache. Cela l'a réparé!
Juste pour ajouter un scénario différent, qui m'est arrivé à moi et à certains de mes collègues:
Alt + entrée dans la classe -> create test: IJ (2017.1.1) propose Arquillian Junit comme première option de test de la bibliothèque. En y allant, la classe de test et les méthodes sont créées sans l'identifiant 'public'. Ensuite, si on décide de changer la bibliothèque de tests en JUnit, il est facile d’oublier l’absence de l’identifiant 'public', ce qui fait que les tests ne sont pas reconnus par IJ. Bien entendu, la solution consiste à placer les identifiants "publics".
Bien que ce ne soit pas ce qui vous est arrivé, cela a les mêmes conséquences. Par conséquent, cette réponse peut aider les autres personnes aux prises avec les mêmes symptômes.
Ce problème a été corrigé à quelques reprises par ... fichier ouvert -> structure de projet. Là, regardez dans le menu de gauche comme dernière entrée, il y a un "problème" (si plus que zéro). Cliquez sur ceux-ci, puis supprimez-les pour chaque problème surligné en rouge dans intellij dans les modules/bibliothèques (bouton moins). Ils recevront des noms de modules du type "test1..23", car intellij cant distingue la structure. Après avoir supprimé tous les marqués en rouge, fermez + redémarrez intellij. Ne lancez pas maven refresh à ce stade, car il réintroduira à nouveau la même erreur. En redémarrant intellij va déclencher une nouvelle analyse du projet structure encore.
Si vous utilisez IntelliJ pour l'exécution du test et le débogage, mais pas pour l'édition. Votre autre éditeur/IDE peut être en train de lutter avec IntelliJ pour le contrôle des fichiers générés (*.class
), ce qui a pour conséquence qu'IntelliJ signale que Aucun test n'a été trouvé (et peut-être aussi de fausses erreurs de compilation).
Dans mon cas, Visual Studio Code semble avoir cet effet (après les dernières mises à jour des deux outils).
La solution que j'ai trouvée consiste à fermer le code Visual Studio puis à reconstruire à nouveau le projet avec IntelliJ ou à partir de la ligne de commande. En d'autres termes, mon flux de travail dual-IDE ne fonctionne plus - je dois donc éditer dans IntelliJ.
Dans mon cas je devais:
Resources Root