wake-up-neo.com

java.lang.Exception: Es wurden keine Tests gefunden, die mit der Methode Intellij übereinstimmen IDEA

Ich habe ein merkwürdiges Verhalten von Intellij IDEA 2016.3. Eine Klasse mit der Methode foo und einen JUnit-Test für die Methode zu haben, wenn ich beim Ausführen des Tests Java.lang.Exception: No tests found matching Method foo bekomme. Nachdem ich mvn test erledigt habe, ist es erfolgreich, und der Einheitentest wird direkt nach dem Ausführen des mvn-Befehls ausgeführt, und es wird plötzlich grün angezeigt. Anscheinend wird IDEA nicht automatisch kompiliert. Wie kann ich das beheben?

P.S. Nach dem Upgrade auf Version 2016.3 wurden keine Einstellungen geändert

14
Arthur Eirich

Nun, nachdem ich ein wenig mit den Laufkonfigurationen der einzelnen Einheitstests gespielt hatte, fiel mir auf, dass für jede Laufkonfiguration ein Build-Ziel in der Before Launch-Option voreingestellt ist (siehe Bild unten):  enter image description here

Nachdem Build in Build Project geändert wurde, laufen die Tests einwandfrei.

6
Arthur Eirich

Das gleiche Problem hatte ich mit Gradle (4.5+) + neuem Build Cache Feature

Manchmal kann es keine neuen Testmethoden finden und löst eine Ausnahme aus (wie Sie im Thema erwähnt haben).

Lösung: Bereinigt die Verzeichnisse .gradle, build und out und versucht es erneut;)

15
Evgeny Lebedev

Wenn Sie ein theoretisches Test-Framework wie Junit oder Robolectric's verwenden, führen Sie die Klasse mit dem gewünschten Test aus, anstatt den Test selbst. Da diese Frameworks Testmethoden als Instanzmethoden anstelle von statischen Methoden verwenden, kann jedes Testframework, das nach einem normalen public static-Test sucht, nichts finden.

12
John Doe

Wenn Sie ursprünglich einen Test mit dem Namen "foo" ausführen und ihn dann in "fooBar" umbenennen, müssen Sie anschließend "fooBar" mit einer neuen Konfiguration ausführen ausführen.

Wenn Sie für "foo" dieselbe ursprüngliche Ausführungskonfiguration verwenden, um "fooBar" auszuführen, wird immer noch nach einem Test mit dem Namen "foo" gesucht, den er nicht findet (also die Ausnahme), weil er in "fooBar" umbenannt wurde. Die neue Ausführungskonfiguration würde korrekt nach dem "fooBar" -Test suchen.

Ich habe diesen Fehler unwissentlich gemacht, weil ich einen Test umbenannt habe, aber dann in IntelliJ nur auf die grüne Schaltfläche "Ausführen" geklickt habe: Dadurch wird die letzte Ausführungskonfiguration ausgeführt, die in diesem Szenario den alten "foo" -Namen hat.

4
cellepo

Zusätzlich zu den anderen Antworten hier: Der Fehler kann auch auftreten, wenn Sie @Test vor der Deklaration der Testmethode vergessen. IntelliJ (2018.1) zeigt Ihnen weiterhin den grünen "Play-Button" für die Testausführung, aber diese öffentliche Methode in Ihrer Testklasse ist kein tatsächlicher Test.

1
Phil

Durch das Löschen des Ausgangsverzeichnisses von Intellij wurde dieses Problem für mich behoben.

1
user3026571

Diese Situation kann auch auftreten, wenn Sie die Annotation @Test Nicht über der Testmethode platzieren.

0
Kuba Skiba

Stellen Sie sicher, dass Sie den richtigen Läufer über Ihrer Klasse haben.

Ich habe diese komische Nachricht erhalten, als ich den Läufer CucumberWithSerenity.class verwendete. Als ich zu SerenityRunner.class wechselte, wurde das Problem behoben.

@RunWith(SerenityRunner.class)
//@RunWith(CucumberWithSerenity.class)
public class WordPressAppTest {

Ich verwende das Serenity-Framework für die Webautomatisierung und verwende unterhalb der Runner-Klasse

import net.serenitybdd.cucumber.CucumberWithSerenity;
import net.serenitybdd.junit.runners.SerenityRunner;
import org.junit.runner.RunWith;

Ich glaube, IDEA (2017.2.6) kann eine bessere Fehlermeldung als diese anzeigen

0
vikramvi

Vielleicht geben Sie nur einen falschen Namen für die Testmethode an.

Ich traf dieses Problem, weil ich '-' anstelle von '_' verwendete, was der IntelliJ nicht darstellen kann.

0
Ming Arron

Stellen Sie sicher, dass Ihr Test öffentlich ist

0
Kyle Anderson