web-dev-qa-db-de.com

Keine Tests mit Testläufer 'JUnit 4' gefunden

Mein Java-Test hat von Eclipse gut funktioniert. Wenn ich jetzt den Test über das Run-Menü erneut starte, erhalte ich die folgende Meldung: 

No tests found with test runner 'JUnit 4'

In der .classpath-Datei habe ich alle jar-Dateien und habe am Ende: 

<classpathentry exported="true" kind="con" path="org.Eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

Wie kann ich diesen Fehler beheben und erneut Tests ausführen?

95
user281070

das ist mir gerade passiert. Das Wiederherstellen oder Neustarten von Eclipse hat nicht geholfen.

Ich löste es, indem ich eine der Testmethoden umbenannte, um mit "test ..." (JUnit3-Stil) zu beginnen. Anschließend werden all -Tests gefunden. Ich habe es in das, was es zuvor war, umbenannt, und es funktioniert immer noch.

144
Germán

Wenn wir diese Fehler erhalten, scheint Eclipse nur verwirrt zu sein. Starten Sie Eclipse neu, aktualisieren Sie das Projekt, reinigen Sie es, lassen Sie es von Eclipse neu erstellen, und versuchen Sie es erneut. Meistens funktioniert das wie ein Zauber.

41
JamesG

Wählen Sie im Kontextmenü Ihres 'Test'-Verzeichnisses' Erstellungspfad '->' Als Quellordner verwenden '. Eclipse sollte Ihre unitTests.Java-Dateien als Quelldateien anzeigen . tritt auf, weil es keine unitTests.class-Dateien in Ihrem 'build'-Verzeichnis gibt

34
Dima

Prüfen Sie, ob Ihre Testklasse "TestCase" erweitert. Wenn ja, entfernen Sie diese Klausel. Ihre Klasse muss nicht von der Klasse "TestCase" erweitert werden. Es sind die meisten Fälle, die ich getroffen habe. 

public class MyTestCase extends TestCase{
  @Test
  public void checkSomething() {
    //...
  }
}
//Result> AssertionFailedError: No test Found in MyTestCase

Das folgende Testfall sollte in Ordnung sein.

public class MyTestCase {
  @Test
  public void checkSomething() {
    //...
  }
}
//Works fine
28
nephilim

Ich war mit dem gleichen Problem konfrontiert und habe es mit schlechten Beispielen im Web und in Internals von Junit debuggt. Lassen Sie Ihre Klasse grundsätzlich nicht TestCase erweitern, wie einige Beispiele für Junit 4.x zeigen. Verwenden Sie eine Namenskonvention Test oder wenn Sie eine Anmerkung wünschen, können Sie @RunWith (JUnit4.class) verwenden.

Wenn Sie Zugriff auf Assert-Methoden benötigen, erweitern Sie Assert oder verwenden Sie statische Importe.

Wenn Ihre Klasse TestCase erweitert, wird sie auch als 3 ausgeführt, wenn Sie Junit 4 Runner verwenden. Dies liegt daran, dass im Initialisierungscode eine Erkennung erfolgt:

Siehe JUnit3Builder und die Zeilen:

boolean isPre4Test(Class<?> testClass) {
    return junit.framework.TestCase.class.isAssignableFrom(testClass);
}

Dies gibt true zurück und der Test auf Junit4-Kompatibilität wird nicht versucht.

27
toomasr

Versuchen Sie das Hinzufügen 

@Test über der Methode für den Test wie folgt

@Test
public void testParse()
{

}
5
Mike Choi

Ich habe die Antwort herausgefunden:

Ich habe diesen Fehler erhalten, als ich den Test Standalone von Eclipse ausgeführt habe (Rechtsklick auf die Methode und als Junit-Test ausführen) 

Als ich die komplette Klasse als Junit-Test ausgeführt habe, wurde der Test mit den Parametern korrekt ausgeführt.

4
Eyal Zamir

Keine Testanzüge in JUnit4. Verwenden Sie stattdessen Anmerkungen oder verwenden Sie alte Konventionen für JUnit3-Namen.

Beispiel:

@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})
4
Roman C

Das ist mir auch passiert. Ich habe versucht, Eclipse neu zu starten, und habe meinen Testmethoden auch Tests vorangestellt. Weder funktionierte.

Der folgende Schritt hat funktioniert: Ändern Sie alle in @BeforeClass und @AfterClass vorhandenen Testmethoden in statische Methoden.

wenn Sie Ihre Testmethode im folgenden Format haben:

@BeforeClass
public void testBeforeClass(){
}

dann ändern Sie es in:

@BeforeClass
public static void testBeforeClass(){
}

Das hat bei mir funktioniert.

4
revindran

Wenn ich auf dieses Problem stoße, bearbeite ich einfach die Datei und speichere sie ... funktioniert wie ein Zauber

3
Mahesh

Mein Problem war, dass die Deklaration import org.junit.Test; verschwunden ist (oder nicht hinzugefügt wurde?). Nachdem ich es hinzugefügt hatte, musste ich eine andere import-Deklaration entfernen (Eclipse zeigt Ihnen an, welche) und alles begann wieder zu funktionieren.

3
Sergii

Sehr spät, aber was das Problem für mich gelöst hat, war, dass meine Testmethode mit Großbuchstaben begann: "public void test". Das t Kleinbuchstaben funktionierte.

3
Josh T

Ich habe die Lösung von Germán ausprobiert ... Es hat für alle Methoden meiner Klasse funktioniert, aber ich habe viele Klassen in meinem Projekt.

Also habe ich versucht, es vom Build-Pfad zu entfernen und es dann erneut hinzuzufügen ... __ Es hat perfekt funktioniert.

Ich hoffe es hilft.

2
Footix29

Noch eine mögliche Lösung, die ich in den Ring werfen werde: Ich konnte die Testklasse weder über das Editorfenster noch über den Package Explorer ausführen, sondern in der Gliederungsansicht mit der rechten Maustaste auf den Klassennamen klicken und Als JUnit ausführen auswählen Test hat funktioniert ... Geh Figur!

2
Matthew Wise

Prüfen Sie, ob der Ordner, in dem sich Ihre Tests befinden, ein Quellordner ist. Wenn nicht - klicken Sie mit der rechten Maustaste und verwenden Sie sie als Quellordner.

1
Todor Kolev

Ich war auch beim JUnit-Test mit dem gleichen Problem konfrontiert. Ich habe dieses Problem gelöst, indem die Annotation @Test direkt über der Haupttestfunktion platziert wurde.

1
Rajith

Möglicherweise war Ihre JUnit-Startkonfiguration für eine einzelne Testklasse und Sie haben diese Konfiguration irgendwie geändert, um "alle Tests in einem Quellordner, Paket oder Projekt auszuführen"

Dies kann jedoch die Fehlermeldung "Keine Tests mit Testläufer 'JUnit 4' gefunden" auslösen.

Oder Sie haben in Ihrer Testklasse eine Änderung vorgenommen und die Annotation @Test entfernt.
Siehe diese Wiki-Seite .

1
VonC

Sechs Jahre später ... und es gibt immer noch Probleme mit Eclipse und gelegentlich nicht gefundenen JUnits.

In meinem Eclipse Mars 2 habe ich festgestellt, dass Testklassen, die von git eingezogen wurden, nicht erkannt werden, wenn die Datei mehr als 9 oder 10 @Test-Anmerkungen enthält. Ich muss zusätzliche Tests auskommentieren, die Testklasse ausführen, sie auskommentieren und die Klasse erneut ausführen. Stelle dir das vor...

1
SimonB

Schließen und öffnen Sie das Projekt, das für mich funktioniert hat.

1
user3022123

Was meinen Fall gelöst hat, war der Antwort von @ JamesG ähnlich: Ich habe Eclipse neu gestartet, das Projekt neu erstellt und es aktualisiert; ABER bevor ich das gemacht habe, habe ich zuerst das Projekt geschlossen (Rechtsklick auf Projekt im Paket-Explorer -> Projekt schließen) und dann wieder geöffnet. Dann hat es funktioniert.

Eine Lösung für die Problemumgehung fand ich, bevor ich die ultimative Lösung fand, die ich gerade beschrieben habe: Kopieren Sie die Testklasse und führen Sie die Testklasse als JUnit aus.

1
cellepo

Klicken Sie mit der rechten Maustaste auf Projekt -> Abhängigkeiten erstellen -> entfernen Sie diejenigen, die aus dem Erstellungspfad ausgeschlossen wurden

Klicken Sie mit der rechten Maustaste auf das Projekt -> Maven -> Projekt aktualisieren.

Du solltest gut sein ..

0
MindBrain

Ich hatte dieses Problem, als mein Java Klassenname dem Testklassennamen ähnelte. Habe gerade den Namen der Testklasse aktualisiert, indem ich ihn mit dem Schlüsselwort "Test" postfixiert habe, und es fing an zu funktionieren

Vorher: Java Klasse: ACMEController Testklasse: ACMEController

After: Java Klasse: ACMEController Testklasse: ACMEControllerTest

0
Ravikiran763

Das ist mir auch passiert. Ich habe festgestellt, dass ich in Eclipse keine neue Java Class-Datei erstellt habe. Deshalb wurde sie nicht kompiliert. Versuchen Sie, Ihren Code in eine Java-Klassendatei zu kopieren, wenn diese noch nicht vorhanden ist, und kompilieren Sie sie anschließend.

0
Anna

Ich begann in meinem Job mit Selenium und Eclipse zu arbeiten, machte meinen ersten automatisierten Test und löschte @Before, @Test und @After Notizen. Ich hatte dieses Problem. .

Meine Lösung bestand einfach darin, @Before, @Test und @After Notizen erneut hinzuzufügen, und damit funktionierte mein Skript. Ist wichtig, dies nicht aus dem Code zu löschen.

Dies ist ein einfacher Test, der Google verwendet, um etwas zu suchen:

import Java.util.regex.Pattern;
import Java.util.concurrent.TimeUnit;

import org.junit.*;

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import org.openqa.Selenium.*;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.openqa.Selenium.support.ui.Select;

public class TestingClass {

    private WebDriver driver;
    //Creates an instance of the FirefoxDriver
    **@Before**
    public void SetUp() throws Exception {
        driver = new FirefoxDriver();
    }

    **@Test**   
    //Search using keyword through Google Search
    public void TestTestClass2 () throws Exception {
        driver.get("http://www.google.com.mx/");
        driver.findElement(By.name("q")).sendKeys("Selenium");
        Thread.sleep(10000);
        driver.findElement(By.name("btnG")).click();
        Thread.sleep(10000);
    }

    //Kill all the WebDriver instances
    **@After**
    public void TearDown() throws Exception {
        driver.quit();
    }

}
0
JuanTorre

Ich lasse auch Eclipse mit Maven (m2e 1.4) laufen. Die Tests liefen mit Maven, aber nicht mit Eclipse ... auch nach mehrmaliger Anwendung von Maven>Update project.

Meine Lösung bestand darin, einige Zeilen in den von m2e generierten .classpath einzufügen. Die Zeilen kleben jetzt.

<classpathentry kind="src" output="target/test-classes" path="src/test/Java">
  <attributes>
    <attribute name="optional" value="true"/>
    <attribute name="maven.pomderived" value="true"/>
  </attributes>
</classpathentry>
0
pascal

Ich musste eine mvn clean auf der Kommandozeile machen und dann project-> clean in Eclipse. Ich habe die Klasse vorher umbenannt und dann wieder umbenannt, aber ich bezweifle, dass das geholfen hat.

0
joe otherside

Es besteht eine weitere Chance, dass Sie Junit Test von der niedrigeren Version (z. B. Junit 3) auf Junit 4 geändert haben Gehen Sie folgendermaßen vor:

1. Right Click on class
2. Select Run as >> "Run Configurations"
3. Check your "Test Runner" option in new window
4. If it not same as maven change it for example change it as Junit 4.
0
Kundan Atre

Ich habe dieses Problem von Zeit zu Zeit. Das Problem, das das Problem am meisten löst, ist für mich die Ausführung des JUnit-Tests unter Run-Konfigurationen. Dabei muss sichergestellt werden, dass JUnit 4 als Testrunner eingestellt ist.

Im Allgemeinen sehe ich dieses Problem, wenn ich versuche, den Run As ... Junit-Test über das Kontextmenü des Paket-Explorers auszuführen. Wenn Sie mit der rechten Maustaste auf den Code für den Test klicken, den Sie ausführen möchten, und statt Ausführen als ... Junit-Test auswählen, wählen Sie Konfigurationen ausführen. Stellen Sie sicher, dass Projekt, Testklasse und Testläufer richtig eingestellt sind. Klicken Sie anschließend auf Übernehmen und anschließend auf Ausführen arbeitet die ganze Zeit für mich.

0
theINtoy

Ich fand heraus, dass Eclipse scheinbar nur JUnit 3-Style-Tests durchführt, wenn Ihre Testklasse von TestCase reicht. Wenn Sie die Vererbung entfernen, funktionierten die Anmerkungen für mich.

Beachten Sie, dass Sie alle erforderlichen assert*-Methoden wie import static org.junit.Assert.* statisch importieren müssen.

0
Martin C.

Ich hatte kürzlich Probleme damit, die in der neuesten Eclipse behoben zu sein scheinen.

Eclipse-Java 4.11.0,2019-03:R -> 4.12.0,2019-06:R

0
rich

Basiert Ihr Eclipse-Projekt auf Maven? In diesem Fall müssen Sie möglicherweise die m2Eclipse-Version aktualisieren. 

Nur eine kurze Anmerkung: Ich habe ein Projekt in Eclipse, die auf Maven basiert, und Zunächst mit dem Assistenten "new maven project" in Eclipse generiert. Ich bin mit JUnit 4.5 für die Komponententests, und konnte die Tests recht gerne ausführen von der Kommandozeile aus mit maven und Einzeltests von Eclipse mit als JUnit-Test laufen lassen .... allerdings wenn ich hat versucht, alle Tests in der .__ auszuführen. Projekt durch Aufruf von run als JUnit test ... auf dem Projektknoten, Eclipse beschwerte sich "keine Tests gefunden Mit Test Runner Junit 4". Gelöst von Aktualisieren von m2Eclipse auf die neueste Version stabile entwicklung bauen aus der m2Eclipse-Update-Site (insbesondere ich hat ein Upgrade von Version 0.9.8.200905041414 auf Version 0.9.9.200907201116 in Eclipse Galileo durchgeführt).

Von hier: http://nuin.blogspot.com/2009/07/m2Eclipse-and-junit4-no-tests-found.html

0
b.roth

Mein Problem war mit **

testng

** Paket org.testng.Assert; 

Sie können es in Bibliotheken des Projekts (Maven) durch JUnit ersetzen und müssen dann das Projekt umgestalten.
ODER fügen Sie das TestNG-Eclipse-Plug-In hinzu 

http://testng.org/doc/Eclipse.html

0
mohsen.nour

Verwendung von ScalaIDE (3.0.4-2.11-20140723-2253-Typesafe) Ich hatte ein ähnliches Problem mit dem Kontextmenü Right Click Scala Test Class-> Run As -> Scala Junit Test.

Ich habe versucht, die Klasse zu bearbeiten (aber nicht für einen Kompilierfehler), das Projekt zu reinigen, Eclipse zu schließen. Keines davon funktionierte, um das Kontextmenü für Klassen wiederherzustellen, die zuvor gut funktionierten. Die Testklassen verwenden nicht die Annotation @Test und verwenden stattdessen die Annotation @RunWith(classOf[JUnitRunner]) am Anfang der Klasse, wobei ScalaTest-Code verwendet wird.

Als ich versuchte, Scala Junit Test direkt aus dem Starteditor für die Konfiguration der Konfiguration zu wählen, erhielt ich das Dialogfeld von der Frage. Die Antwort von Footix29 war für mich der Schlüssel.

Ich bemerkte, dass, obwohl ich mein Projekt einige Male bereinigt hatte, meine Klassen im Verzeichnis/bin seit einiger Zeit nicht wirklich neu erstellt wurden.

So habe ich das Kontextmenü zurückbekommen und konnte Scala Junit Tests erneut ausführen:

  • manually bereinigte die Klassen, indem der /bin/<package dir>* über den Explorer gelöscht wurde
  • Project -> Cleaned das Projekt zusammen mit einer vollständigen Neuerstellung

Ich vermute, dass eine Klassenbearbeitung im Allgemeinen in der Lage ist, einige gespeicherte Zustände von Eclipse zu säubern und wieder in Gang zu setzen. In meinem Fall waren alle vorherigen Arbeitsklassen, die ich ausprobiert hatte, fehlgeschlagen, sodass der manual-Clean-Schritt genau der Hammer war, den ich brauchte. Andere Tricks, die das Konzept des Klassenpfads/Build-Status von Eclipse beeinflussen, sollten jedoch ebenfalls funktionieren.

Ich denke außerdem, dass dieses Verhalten zum Teil dadurch ausgelöst wurde, dass versucht wurde, eine Scala-Klasse durch Umbenennen umzuändern (was die Scala Eclipse IDE an sich), bei der die Bereinigung nach der anfänglichen Dateiänderung manuell erfolgt. Es gab keine Build-Fehler, aber es gab auch keine Warnungen, von denen erwartet wurde, dass etwas definitiv in Eclipse's Build-State-Info stecken blieb.

0
n0741337

Sie können dieses Problem folgendermaßen beheben:

  • Klicken Sie mit der rechten Maustaste auf den Ordner "Test"> Build-Pfad> Als Quelle verwenden Ordner
  • Oder Sie können Klassenpfad gleich setzen: <classpathentry kind="src" path="src/test/Java"/>. Sie ersetzen "src/test/Java" durch Ihr Testpaket

Dieses Problem trat auf, weil junit Ihren Quellcode nicht erkennen konnte: D

0
Vu Truong