Warum erkennt Intellij IDEA plötzlich keine Tests mehr im Testordner?

Lesezeit: 7 Minuten

Benutzeravatar von Djordje Ivanovic
Djordje Ivanović

Ich benutze JUnit, seit ich dieses Projekt gestartet habe, und alles funktioniert einwandfrei. Ich habe ein paar hundert Tests, und natürlich fange ich hier und da mit allen an. Klicken Sie mit der rechten Maustaste auf den Stammtestordner, führen Sie (oder debuggen Sie) mit JUnit aus. Aber seit gestern, wenn ich das mache, ist das Ergebnis:

Process finished with exit code 0

ohne einen der Tests zu starten. Das Gleiche gilt für jeden Ordner im Ordnerbaum. Ich kann immer noch eine einzelne Testklasse ausführen, aber ich brauche wirklich eine Option, um sie alle zu starten. Wenn jemand von euch eine Idee hat, dann lasst sie bitte hier.

Folgendes wird protokolliert, wenn ich versuche, Tests auszuführen:

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)

  • Ist Ihr Testordner noch auf Test eingestellt (grüne Farbe)? Hast du Maven deaktiviert oder einige Änderungen daran vorgenommen?

    – Zufällig42

    31. Oktober 2012 um 12:24 Uhr

  • Es ist immer noch grün und jedes Unterordnersymbol hat einen kleinen grünen Punkt darauf. Ich habe keine Änderungen mit maven vorgenommen. Außerdem verliert Atlassian Connector seit gestern jedes Mal, wenn ich IDEA neu starte, die aktuelle Konfiguration, und ich muss sie erneut hinzufügen.

    – Djordje Ivanovic

    31. Oktober 2012 um 13:04 Uhr


  • Ich behebe das Problem mit Atlassian Connector, kann aber immer noch keine Tests aus dem Ordner ausführen …

    – Djordje Ivanovic

    31. Oktober 2012 um 13:54 Uhr

  • Prüfen idea.log für Ausnahmen (Hilfe | Login anzeigen …). Versuchen Sie, IDEA mit den Standardeinstellungen auszuführen (benennen Sie die Verzeichnisse um: devnet.jetbrains.net/docs/DOC-181).

    – CrazyCoder

    31. Oktober 2012 um 14:14 Uhr

  • Ich habe der Frage ein Fehlerprotokoll hinzugefügt.

    – Djordje Ivanovic

    31. Oktober 2012 um 14:20 Uhr

Benutzeravatar von Djordje Ivanovic
Djordje Ivanović

Okay, ich habe es behoben.

Im Menü unter Datei gibt es eine Cache-Invalidierungsoption. Das hat es behoben!

  • Diese Cache-Option ist eine ziemlich unvorhersehbare Problemumgehung. Ich hoffe, die IDEA-Entwickler werden Fälle beheben oder sie für uns automatisieren 🙂

    – Eugen Martynow

    2. November 2012 um 9:35 Uhr

  • Das funktioniert bei mir nicht. 🙁 Gibt es eine andere Lösung?

    – Pfarr

    30. März 2017 um 23:49 Uhr

  • Komm schon, das ist der nervigste Aspekt von IntelliJ … stundenlanges Suchen nach einer Lösung, und dann diese Standardantwort … ähnlich wie “Windows neu starten”.

    – Gehirn

    8. September 2021 um 6:00 Uhr

  • Wir sollten dem Ideenteam vorschlagen, „Cache ungültig machen“ in „Problem auf magische Weise beheben“ umzubenennen.

    – voodoo_patch

    18. März um 20:17 Uhr

In der neuesten IDE (ab Community Edition 2016.1) ist diese Option vereinfachter.

Klicken Sie mit der rechten Maustaste auf den Ordner, der als Quellordner erkannt werden soll:

Verzeichnis markieren als -> Sources Root

Geben Sie hier die Bildbeschreibung ein

  • aber wenn Sie ein Multimodul-Projekt haben, ist es wirklich pita, es überall manuell einzustellen 🙁

    – chipiik

    20. Februar 2017 um 15:31 Uhr

  • Es sollte ein Test Sources-Stamm sein, sonst wird Ihr Projekt die Tests und die Testbibliotheken auch für eine Veröffentlichung kompilieren.

    – Fran Marzoa

    23. März 2018 um 18:23 Uhr

  • Ich habe dort nur “ausgeschlossen”.

    – Linie

    7. März 2019 um 16:18 Uhr

  • Dies sollte sofort funktionieren und muss nicht manuell eingestellt werden. Aber in einigen Fällen musste ich dasselbe tun.

    – Arefe

    23. Mai 2019 um 7:56 Uhr

  • Dies ist die einzige Lösung, die für mich funktioniert hat. Ich habe auch ein “test->java” als “Test Sources Root” markiert. Vielen Dank.

    – Jonah Tornovsky

    30. Januar um 17:41 Uhr

Benutzeravatar von Volodymyr Dvornyk
Wolodymyr Dvornyk

Aus irgendeinem Grund erkennt Intellij Idea Klassen nicht als Testklassen, die nicht explizit öffentlich sind. Falls die Klasse einen Standardzugriffsspezifizierer hat, wird sie nicht als Test markiert. Versuchen Sie, die Klasse zu wechseln, um diese Regel zu erfüllen. Beispiel:

public class TestMe {
   @Test
   public void shouldTest(){
      Assert.assertEquals("test", "test");
   }
}

  • Das hat mein Problem gelöst. Ich neige dazu, die Python-Syntax mit der Java-Syntax zu mischen, und habe vergessen, dass Klassen in Java einen Zugriffsmodifikator verwenden sollten.

    – mgilsn

    10. Juli 2020 um 2:50 Uhr

  • Testklassen UND Methoden sein sollten public. Dies hat die Probleme für mich behoben

    – Tamb

    8. März 2021 um 17:33 Uhr


Benutzeravatar von João Matos
João Matos

Nur um ein anderes Szenario hinzuzufügen, das mir und einigen meiner Kollegen passiert ist:

Alt+Enter in der Klasse -> Test erstellen: IJ (2017.1.1) schlägt Arquillian Junit als erste Option zum Testen der Bibliothek vor und geht damit die Testklasse und -methoden werden ohne den „öffentlichen“ Bezeichner erstellt. Wenn man sich dann entscheidet, die Testbibliothek auf JUnit umzustellen, vergisst man leicht das Fehlen der „öffentlichen“ Kennung, was dazu führt, dass die Tests von IJ nicht erkannt werden. Die Lösung besteht natürlich darin, die „öffentlichen“ Identifikatoren zu platzieren.

Obwohl dies nicht das ist, was Ihnen passiert ist, hat es die gleiche Konsequenz, daher kann diese Antwort anderen helfen, die die gleichen Symptome haben.

Benutzeravatar von user7023213
Benutzer7023213

Dies wurde ein paar Mal behoben durch … Datei öffnen –> Projektstruktur. Schauen Sie dort im Menü auf der linken Seite nach, als letzter Eintrag gibt es eine “Problem” -Zählung (wenn mehr als Null). Klicken Sie auf diese und entfernen Sie sie dann für jedes Problem, das in intellij in Modulen / Bibliotheken rot hervorgehoben ist (Minus-Schaltfläche). Sie erhalten Modulnamen wie “test1..23”, da intellij die Struktur nicht erkennen kann. Nach dem Löschen aller rot markierten Dateien schließen + intellij neu starten. Führen Sie Maven Refresh zu diesem Zeitpunkt nicht aus, da es denselben Fehler erneut einführt. Durch den Neustart von intellij wird ein neuer Scan des Projekts ausgelöst Geben Sie hier die Bildbeschreibung einwieder strukturieren.

Benutzeravatar von WesternGun
WesternGun

In meinem Fall verschieben wir von JUnit 4 auf JUnit 5 und ich habe die gemischt @Test von ihnen.

Zusamenfassend:

  • wenn du benutzt @RunWith() von JUnit 4 müssen Sie verwenden @org.junit.Test Testmethoden zu kommentieren.
  • wenn du benutzt @ExtendWith() von JUnit 5 müssen Sie verwenden @org.junit.jupiter.api.Test stattdessen.

Wenn ich den Import ändere, kann meine Klasse wieder als Testklasse ausgeführt werden.

Benutzeravatar von Tom Rossen
Tom Rossen

Keine der vorherigen Antworten hat bei mir in IDEA 2019.1.2 (oder -.3) mit Junit Jupiter 5.5.0 funktioniert. Ich hatte ein paar Projekte git-geklont, die ich von einem anderen Computer auf GitHub gepusht hatte, wo ihre Tests gut liefen. Auf meinem neuen Laptop bekam ich “Es wurden keine Tests gefunden”, egal wie ich versuchte, sie auszuführen.

Was schließlich funktionierte: Ich habe die generierte IDEA gelöscht test.iml Datei, weil ich bemerkt hatte, dass es in einem jungfräulichen Projekt, das ich erstellt hatte, keine solche Datei gab, nur um zu sehen, ob ich überhaupt Tests durchführen konnte (ich könnte es tatsächlich). Nachdem ich diese Datei in beiden älteren Projekten gelöscht habe, liefen Tests einwandfrei. Nichts Neues test.iml generiert wurde.

Ich weiß nicht, wie oder wann diese Dateien generiert wurden. Da die Git-Repos privat sind, habe ich mich nicht darum gekümmert, die *.*ml-Dateien von IDEA zu ignorieren; Trotzdem waren sie nicht in den GitHub-Repos. Außerdem befanden sie sich an den Wurzeln der Projekte, nicht im .idea-Verzeichnis.

1431100cookie-checkWarum erkennt Intellij IDEA plötzlich keine Tests mehr im Testordner?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy