Ich bin neu bei JUnit und wir müssen es für Hausaufgaben verwenden. Unser Professor hat uns ein Projekt mit einer Testklasse, BallTest.Java
, zur Verfügung gestellt. Wenn ich mit der rechten Maustaste auf> Ausführen als> JUnit-Test klicke, erhalte ich einen Popup-Fehler, der besagt, dass kein JUnit-Test gefunden wurde. Ich weiß, dass die Frage hier beantwortet wurde ( Keine Tests mit Testläufer 'JUnit 4' ) gefunden, aber Eclipse schließen, Neustarten, Reinigen und Bauen scheint nicht zu funktionieren. Unten finden Sie Screenshots meiner Laufkonfiguration, des Erstellungspfads und der Klasse, die ich testen möchte.
BallTest.Java
import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class BallTest {
Ball ball;
/**
* @throws Java.lang.Exception
*/
@Before
public void setUp() throws Exception {
System.out.println("Setting up ...");
Point2D p = new Point2D(0,0);
ball = new Ball(p);
}
/**
* @throws Java.lang.Exception
*/
@After
public void tearDown() throws Exception {
System.out.println("Tearing down ...");
ball = null;
}
/**
* Test method for {@link Ball#getCoordinates()}.
*/
@Test
public void testGetCoordinates() {
assertNotNull(ball); // don't need Assert. because of the import statement above.
Assert.assertEquals(ball.getCoordinates().getX(), 0);
Assert.assertEquals(ball.getCoordinates().getY(), 0);
}
/**
* Test method for {@link Ball#setCoordinates(Point2D)}.
*/
@Test
public void testSetCoordinates() {
Assert.assertNotNull(ball);
Point2D p = new Point2D(99,99);
ball.setCoordinates(p);
Assert.assertEquals(ball.getCoordinates().getX(), 99);
Assert.assertEquals(ball.getCoordinates().getY(), 99);
}
/**
* Test method for {@link Ball#Ball(Point2D)}.
*/
@Test
public void testBall() {
Point2D p = new Point2D(49,30);
ball = new Ball(p);
Assert.assertNotNull(ball);
Assert.assertEquals(ball.getCoordinates().getX(), 49);
Assert.assertEquals(ball.getCoordinates().getY(), 30);
//fail("Not yet implemented");
}
public static void main (String[] args) {
Result result = JUnitCore.runClasses(BallTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Klicken Sie mit der rechten Maustaste auf Projekt> Eigenschaften> Java-Build-Pfad> Testordner als Quellordner hinzufügen.
Alle Quellordner einschließlich Testklassen müssen sich im Eclipse Java Build Path befinden. Damit können die Quellen wie Haupt- und Testklassen in das Build-Verzeichnis kompiliert werden (der Eclipse-Standardordner ist bin).
Wenn keine der anderen Antworten für Sie funktioniert, haben Sie Folgendes gefunden.
Starten Sie Eclipse neu
Ich hatte den Quellordner richtig konfiguriert und die Gerätetests korrekt kommentiert, aber es wurde immer noch "Kein JUnit-Test gefunden" für ein Projekt angezeigt. Nach einem Neustart hat es funktioniert. Ich habe STS 3.6.2 basierend auf Eclipse Luna 4.4.1 verwendet
klicken Sie mit der rechten Maustaste -> Build-Pfad -> Vom Build-Pfad entfernen und fügen Sie ihn erneut hinzu -> Klicken Sie mit der rechten Maustaste auf den Ordner 'Test'> Build-Pfad> Als Quellordner verwenden.
Ich hatte das gleiche Problem und löste es wie folgt: Ich habe @Test Annotation gelöscht und es erneut eingetippt.
Es scheint, dass Sie die Runner-Definition in Ihrer Testklasse verpassen.
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class BallTest {
...
}
Jede Lösung hat für mich nicht funktioniert, bis ich den Namen meiner Testmethode geändert habe. Wenn der Name der Testmethode mit "Test" beginnt, ist OK . Ich bin neu in Android-Programmierung und es war für mich eine große Überraschung.
Ich denke, Sie haben Ihre Testklassen außerhalb des SRC-Ordners erstellt. Sie können das obige Problem auf zwei Arten lösen:
Fügen Sie Ihren Paketnamen in Java build path->source
hinzu.
Verschieben Sie Ihren package/class
in den src
-Ordner
Ich habe das gleiche Problem und habe auf diese Weise beide Lösungen gelöst.
Ich habe das Problem durch Konfigurieren des Buildpfads gelöst. Klicken Sie mit der rechten Maustaste auf das Projekt (oder einen der Unterordner) -> Buildpfad -> Buildpfad konfigurieren. Sobald das Eigenschaftsfenster geöffnet ist, klicken Sie auf die Registerkarte "Quelle" und fügen Sie Ihre Ordner "src" und "tst" hinzu. Seltsamerweise musste ich die Anmerkungen erneut eingeben. (Projekt-> Bereinigen oder Neustarten haben jedoch möglicherweise auch funktioniert).
Um dieses Problem zu beheben, setzen Sie am besten den öffentlichen Zugriffsmodifizierer für den Junit-Testfall-Klassennamen und führen das Szenario aus, indem Sie mit der rechten Maustaste auf Ihre Junit-Testfallklasse klicken und als Junit-Test ausführen.
junit4
setzt voraus, dass der Testklassenname Test
als Suffix verwendet werden soll.
Nachdem Sie eine Sicherungskopie des Ordners "src/test" erstellt hatten, wurde die Lösung aus dem Dateisystem entfernt und erneut erstellt.
Das war nachdem ich den Hinweis "Remove from build path" gemacht hatte und beim Öffnen des Projekts in STS 4 die Ordner durchgebrannt hat.
Die Laufkonfiguration für eine Testklasse kann eine andere Ursache (und Lösung) für dieses Problem verursachen.
Wenn Sie Konfigurationen ausführen (oder Debugging ausführen) (mit cmd-3 oder durch Klicken auf die kleinen Dropdown-Schaltflächen in der Symbolleiste), wird eine Konfiguration für jede Testklasse angezeigt, mit der Sie gearbeitet haben. Ich fand heraus, dass eine meiner Klassen, die nicht gestartet werden konnten, eine Laufkonfiguration hatte, bei der das Feld Testmethode versehentlich gefüllt wurde. Ich musste das klarstellen, damit es funktioniert. Wenn es deaktiviert ist, wird (alle Methoden) in hellem Text angezeigt.
Ich füge das seltsam hinzu - vielleicht gab es noch etwas anderes - es schien auch nicht für mich zu funktionieren, bis ich auch das Feld "Name" korrigiert habe, sodass es nur den Klassennamen wie die anderen JUnit-Laufkonfigurationen enthielt.
Ich habe @RunWith(Parameterized.class)
verwendet, aber die @Parameters
-Annotation in der öffentlichen statischen Parametermethode nicht hinzugefügt. Nach dem Hinzufügen der Anmerkung hat es funktioniert.
Dieses Problem ist beim Aktualisieren von Projekten in verschiedenen Eclipse-Versionen aufgetreten. Für z. Junits, die gut in Mars 2.0 laufen, liefen nicht auf Neon. Folgendes hat für mich gearbeitet.
In Eclipse Photon müssen Sie möglicherweise JUnit 4 oder 5 zum Erstellungspfad hinzufügen. Klicken Sie mit der rechten Maustaste auf @Test, und wählen Sie "JUnit 4 zum Buildpfad hinzufügen" aus.
Versuche dies
Klicken Sie mit der rechten Maustaste auf die Unit Test Class.
Führen Sie jetzt den Test aus!