web-dev-qa-db-fra.com

Pourquoi Intellij IDEA Vous ne reconnaissez plus les tests dans le dossier de test?

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)
16
Djordje Ivanovic

OK, je l'ai corrigé. 

Dans le menu, sous Fichier, il existe une option d’invalidation du cache. Cela l'a réparé!

25
Djordje Ivanovic

Sur la dernière IDE (à partir de Community Edition 2016.1), cette option est simplifiée.

faites un clic droit sur le dossier que vous voulez reconnaître comme dossier source:

Marquer le répertoire comme -> Sources Racine

 enter image description here

17
LeTex

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. 

2
João Matos

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  enter image description here structure encore.

1
user7023213

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.

0
nobar

Dans mon cas je devais:

  • fermer le projet
  • ouvrez le fichier build.gradle
  • écraser le projet existant? Oui
  • clic droit sur le projet
    • Marquer le répertoire comme> Resources Root
0
030