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
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):
Nachdem Build
in Build Project
geändert wurde, laufen die Tests einwandfrei.
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;)
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.
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.
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.
Durch das Löschen des Ausgangsverzeichnisses von Intellij wurde dieses Problem für mich behoben.
Diese Situation kann auch auftreten, wenn Sie die Annotation @Test
Nicht über der Testmethode platzieren.
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
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.
Stellen Sie sicher, dass Ihr Test öffentlich ist