2012-10-31 13 views
12

Ich benutze JUnit seit ich dieses Projekt gestartet habe und alles funktioniert gut. Ich habe ein paar hundert Tests, und natürlich starte ich hier und da alle. Klicken Sie mit der rechten Maustaste auf den Stammtestordner, führen Sie (oder debuggen) Sie mit JUnit aus. Aber seit gestern, wenn ich das tue, ist das Ergebnis:Intellij IDEA sudenly erkennt keine Tests im Testordner

Process finished with exit code 0 

ohne Tests zu starten. Das gleiche gilt für jeden Ordner in der Ordnerstruktur. Ich kann immer noch eine Testklasse laufen lassen, aber ich brauche wirklich eine Option, um alle zu starten. Wenn jemand von Ihnen Ideen hat, lassen Sie ihn bitte hier fallen.

Hier ist, was 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) 
+0

Ist Ihr Testordner noch für den Test (grüne Farbe) eingestellt? Haben Sie Maven deaktiviert oder Änderungen vorgenommen? – m3th0dman

+0

Es ist immer noch grün und jedes Unterordner-Symbol hat einen kleinen grünen Punkt. Ich habe mit Maven keine Änderungen vorgenommen. Außerdem, seit gestern, jedes Mal, wenn ich IDEA neustarten, Atlassian Connector verlieren aktuelle Konfiguration, und ich muss es wieder hinzufügen. –

+0

Ich behebe Probleme mit Atlassian-Konnektor, aber immer noch keine Tests aus dem Ordner ... –

Antwort

18

OK, ich es fest.

Im Menü unter Datei gibt es eine Option zum Ungültigmachen des Caches. Das hat es behoben!

+2

Diese Cache-Option ist eine ziemlich unvorhersehbare Problemumgehung. hoffe IDEA-Entwickler werden Fälle reparieren oder für uns automatisieren :) –

+1

Danke, das hat mir auch sehr geholfen! –

+0

Das funktioniert nicht für mich. :(Gibt es eine andere Lösung? – OverrockSTAR

8

Auf der neuesten IDE (ab Community Edition 2016.1) ist diese Option vereinfacht.

Rechtsklick auf den Ordner, den Sie als Quellordner erkannt werden wollen:

Mark Directory-As -> Quellen Wurzel

enter image description here

+0

aber wenn Sie Multimodul-Projekt haben, ist es wirklich Pita, um es überall manuell einzustellen :( – chipiik

0

einfach ein anderes Szenario hinzuzufügen, die passiert ist zu mir und einigen meiner Mitarbeiter:

Alt + Eingabe in der Klasse -> Test erstellen: IJ (2017.1.1) schlägt Arquillian Junit als erste Option zum Testen der Bibliothek vor und indem Sie damit fortfahren, werden die Testklasse und die Methoden ohne die 'öffentliche' Kennung erstellt. Wenn man dann entscheidet, die Testbibliothek in JUnit zu ändern, vergisst man leicht das Fehlen des "öffentlichen" Identifikators, wodurch die Tests von IJ nicht erkannt werden. Die Lösung besteht natürlich darin, die "öffentlichen" Kennungen zu platzieren.

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