JUnit 4 Testsuiten

98

Wie erstelle ich Testsuiten mit JUnit 4?

Die gesamte Dokumentation, die ich gesehen habe, scheint für mich nicht zu funktionieren. Wenn ich den Eclipse-Assistenten verwende, kann ich keine der von mir erstellten Testklassen auswählen.

Adam Taylor
quelle
4
Mit Eclipse 3.7 Indigo unterstützt der Test Suite-Assistent jetzt JUnit 4
Fabian Steeg

Antworten:

147
import org.junit.runners.Suite;
import org.junit.runner.RunWith;

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}
Joachim Sauer
quelle
61

Sie können eine Suite wie diese erstellen. Zum Beispiel würde eine AllTestSuite ungefähr so ​​aussehen.

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

Jetzt können Sie dies auf verschiedene Arten ausführen:

  1. Klicken Sie mit der rechten Maustaste und führen Sie Eclipse als Junit-Test aus
  2. Erstellen Sie eine ausführbare Java-Anwendung. Hauptklasse = 'org.junit.runner.JUnitCore' und Args = 'my.package.tests.AllTests'
  3. Führen Sie die Befehlszeile aus:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests
cmcginty
quelle
Würde noch mehr VoteUps für die CMDLine hinzufügen :)
Gruber
9

Ich denke, TestSuite ist in Ungnade gefallen. Das war vielleicht der Stil vor 4.x, aber soweit ich weiß, ist es jetzt nicht mehr so.

Ich kommentiere nur die gewünschten Tests und führe dann die Klasse aus. Alle mit Anmerkungen versehenen Tests werden ausgeführt. Ich könnte Ant verwenden, aber die meiste Zeit habe ich IntelliJ, um sie für mich auszuführen.

Duffymo
quelle
11
Ich könnte mich irren, aber ich denke, TestSuite ist immer noch gut, wenn wir die Reihenfolge der Tests festlegen müssen, insbesondere bei automatisierten Integrationstests, bei denen das Testen kleinerer Szenarien vor komplexeren Szenarien erfolgen sollte.
Bertie
@duffymo Ich finde Ihren Kommentar interessant, da ich bisher in der Gedankenlinie vor 4.x über das Organisieren von Testfällen in Testsuiten geschult wurde
Vatsala
6
Wenn Sie eine größere Anzahl von Tests, verschiedene Funktionsbereiche / Module, eine Unterscheidung zwischen "Kern" -Tests und zusätzlichen / langsameren / teuren Nicht-Kern-Tests haben - aus einem dieser Gründe - würden Sie Tests in eine TestSuite strukturieren.
Thomas W
1
Sie können die @SuiteClassAnmerkung in mehreren Klassen verwenden und Suiten in Suiten verschachteln. Der Gedankengang, um sie in 3.x zu organisieren, ist immer noch völlig gültig (und sollte verwendet werden). Sie können alles genauso strukturieren wie zuvor. Sie verwenden einfach die Anmerkungssyntax anstelle von TestSuite.suite(). Die Verwendung TestSuiteder Annotation hat wirklich keinen Vorteil, und Sie können alle JUnit 4-Verbesserungen nutzen, wenn Sie die organisatorisch äquivalente Annotation verwenden.
Thunderforge
3

Hier sind die Schritte zum Erstellen einer JUnit-Suite in Eclipse:

  1. Wählen Sie in der Ansicht "Paket-Explorer" der Eclipse-Java-Perspektive Ihre Komponententests in ihrem Paket innerhalb des Eclipse-Java-Projekts aus.
  2. Klicken Sie mit der rechten Maustaste auf einen der ausgewählten Tests.
  3. Wählen Sie im Popup-Menü Neu, Andere ...
  4. Öffnen Sie den Ordner 'Java' und dann den Ordner 'JUnit'
  5. Wählen Sie 'JUnit Test Suite' und dann die Schaltfläche 'Weiter'
  6. Wählen Sie die Schaltfläche 'Fertig stellen'
  7. Ergebnis: Die Suite-Datei 'AllTests.java' wird erstellt, wobei Tests automatisch eingeschlossen werden
  8. Klicken Sie in Eclipse auf die Schaltfläche Ausführen
  9. Ergebnis: Alle Tests in der Suite werden ausgeführt
  10. Sie können jetzt mit ANT, Jenkins oder einem anderen Tool zur kontinuierlichen Integration der Build-Konfiguration auf diese Suite-Datei verweisen.

Versionsinfo: Dies gilt für Eclipse Neon und JUnit 4. Sie können auch JUnit 3 auswählen, bevor Sie in Schritt 6 'Fertig stellen' auswählen.

roten Hahn
quelle
Könnten Sie eine build.xml-Datei veröffentlichen, die zeigt, wie diese Testsuite von ANT aus ausgeführt wird?
LiborStefek
1

Erstellen Sie oben auf meinem Kopf eine TestSuite und rufen Sie addTests auf. Wenn Sie möchten, dass sich eine Quelle ansieht, probieren Sie eine OpenSource-Bibliothek wie den Ruhezustand oder etwas aus Apache aus und suchen Sie im Testverzeichnis der Quelle nach einer Testsuite ...

mP.
quelle