JUnit Testfälle @Before @BeforeClass-Annotation
JUnit ist die beliebteste Einheit Testen Rahmen in JavaEs wird ausdrücklich empfohlen für Unit Tests. JUnit Zum Testen der Webanwendung ist kein Server erforderlich, was den Testprozess beschleunigt.
JUnit Das Framework ermöglicht außerdem die schnelle und einfache Generierung von Testfällen und Testdaten. Der org.Junit Das Paket besteht aus vielen Schnittstellen und Klassen für JUnit Tests wie Test, Assert, After, Before usw.
Was ist ein Testgerät?
Bevor wir verstehen, was ein Testgerät ist, schauen wir uns den folgenden Code an
Dieser Code dient dazu, zwei Testfälle für eine einfache Datei auszuführen.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
Hier gibt es ein paar Probleme
- Der Code ist nicht lesbar
- Der Code ist nicht einfach zu warten.
- Wenn die Testsuite komplex ist, kann der Code logische Probleme enthalten.
Vergleichen Sie denselben Code mit JUnit
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Der Code ist viel lesbarer und wartbarer. Die obige Codestruktur ist eine Testvorrichtung.
Eine Testvorrichtung ist ein Kontext, in dem a JUnit Testfall läuft. Zu den Testvorrichtungen gehören in der Regel:
- Objekte oder Ressourcen, die für jeden Testfall verfügbar sind.
- Erforderliche Aktivitäten, die diese Objekte/Ressourcen verfügbar machen.
- Diese Aktivitäten sind
- Zuteilung (-Setup)
- Freigabe aufheben (Teardown).
Auf- und Abbau
- Normalerweise müssen vor jedem Testfall einige wiederholte Aufgaben erledigt werden. Ejemplo: Erstellen Sie eine Datenbankverbindung.
- Ebenso kann es am Ende jedes Testfalls zu wiederholten Aufgaben kommen. Ejemplo: zum Aufräumen, sobald die Testausführung abgeschlossen ist.
- JUnit Bietet Anmerkungen, die beim Auf- und Abbau helfen. Es stellt sicher, dass Ressourcen freigegeben werden und das Testsystem für den nächsten Testfall bereit ist.
Diese JUnit Anmerkungen werden unten besprochen.
Einrichtung
@Vor Anmerkung in JUnit wird für eine Methode verwendet, die enthält Java Code, der vor jedem Testfall ausgeführt werden soll. dh es wird vor jeder Testausführung ausgeführt.
Teardown (unabhängig vom Urteil)
@Nach dem Annotation wird für eine Methode verwendet, die Java-Code enthält, der nach jedem Testfall ausgeführt wird. Diese Methoden werden auch dann ausgeführt, wenn im Testfall Ausnahmen ausgelöst werden oder Assertionsfehler auftreten.
Hinweis:
- Es ist eine beliebige Anzahl der oben aufgeführten Anmerkungen zulässig.
- Alle mit kommentierten Methoden @Vor in JUnit werden vor jedem Testfall ausgeführt, sie können jedoch in beliebiger Reihenfolge ausgeführt werden.
- Sie können die Methoden @Before und @After von einer Superklasse erben. Die Ausführung erfolgt wie folgt: Es handelt sich um einen Standardausführungsprozess in JUnit.
- Führen Sie die aus JUnit @Before-Methoden in der Superklasse
- Führen Sie die @Before-Methoden in dieser Klasse aus
- Führen Sie in dieser Klasse eine @Test-Methode aus
- Führen Sie die @After-Methoden in dieser Klasse aus
- Führen Sie die @After-Methoden in der Oberklasse aus
Beispiel: Erstellen einer Klasse mit Datei als Testvorrichtung
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Im obigen Beispiel sieht die Ausführungskette wie folgt aus:
- createOutputFile()
- testFile1()
- deleteOutputFile()
- createOutputFile()
- testFile2()
- deleteOutputFile()
Annahme:
testFile1() wird vor testFile2() ausgeführt – was nicht garantiert ist.
Einmalige Einrichtung
- Es ist möglich, eine Methode nur einmal für die gesamte Testklasse auszuführen, bevor einer der Tests ausgeführt wird, und zwar vor jedem anderen @Vor Methode(n).
- „Einmalige Einrichtung“ ist nützlich zum Starten von Servern, zum Öffnen von Kommunikationen usw. Es ist zeitaufwändig, Ressourcen für jeden Test zu schließen und wieder zu öffnen.
- Dies kann mithilfe der Annotation erfolgen @Vor dem Unterricht in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
Einmaliger Abriss
- Ähnlich wie bei der einmaligen Einrichtung ist auch eine Methode zur einmaligen Bereinigung verfügbar. Es läuft nach allen Testfallmethoden und @Nach dem Anmerkungen wurden ausgeführt.
- Dies ist nützlich, um Server zu stoppen, Kommunikationsverbindungen zu schließen usw.
- Dies kann mit Hilfe der @Nach dem Unterricht Anmerkung
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit Testsuiten
Wenn wir mehrere Tests in einer bestimmten Reihenfolge ausführen möchten, können wir dies tun, indem wir alle Tests an einem Ort kombinieren. Dieser Ort wird als Testsuite bezeichnet. Weitere Einzelheiten zur Ausführung von Testsuiten und ihrer Verwendung finden Sie in JUnit wird dabei behandelt Lernprogramm.
Junit Test Runner
JUnit stellt ein Tool zur Ausführung Ihrer Testfälle bereit.
- JUnitCore Die Klasse wird zum Ausführen dieser Tests verwendet.
- Eine Methode namens runClasses Zur Verfügung gestellt von org.junit.runner.JUnitKern, wird verwendet, um eine oder mehrere Testklassen auszuführen.
- Der Rückgabetyp dieser Methode ist der Ergebnis Objekt (org.junit.runner.Ergebnis), das zum Zugriff auf Informationen zu den Tests verwendet wird. Weitere Informationen finden Sie im folgenden Codebeispiel.
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Im obigen Code wird das „Ergebnis“-Objekt verarbeitet, um Fehler und erfolgreiche Ergebnisse der von uns ausgeführten Testfälle zu erhalten.
Vorname JUnit Programm
Gute Kenntnisse in SDLC, Java-Programmierung und Grundlagen von Softwaretest Prozess hilft beim Verständnis JUnit
Lassen Sie uns Unit Testing anhand eines Live-Beispiels verstehen. Wir müssen eine Testklasse mit einer Testmethode erstellen, die mit annotiert ist @Prüfung wie unten angegeben:
MyFirstClassTest.java
package guru99.JUnit; import static org.JUnit.Assert.*; import org.JUnit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
Um unsere Testmethode (oben) auszuführen, müssen wir einen Testläufer erstellen. Im Test Runner müssen wir die Testklasse als Parameter hinzufügen JUnitDie runclasses()-Methode von Core. Das Testergebnis wird basierend darauf zurückgegeben, ob der Test bestanden oder nicht bestanden wurde.
Weitere Einzelheiten hierzu finden Sie im folgenden Code:
package guru99.JUnit; import org.JUnit.runner.JUnitCore; import org.JUnit.runner.Result; import org.JUnit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Ausgang
Sobald TestRunner.java unsere Testmethoden ausführt, erhalten wir die Ausgabe als fehlgeschlagen oder bestanden. Nachfolgend finden Sie eine Erklärung zur Ausgabe:
- In diesem Beispiel nach der Ausführung MyFirstClassTest.java , der Test ist bestanden und das Ergebnis ist grün.
- Wenn es fehlgeschlagen wäre, hätte das Ergebnis rot angezeigt werden sollen und der Fehler könnte in der Fehlerverfolgung beobachtet werden. Siehe unten JUnit GUI:
Zusammenfassung
- JUnit ist ein Framework, das mehrere Annotationen unterstützt, um eine Methode zu identifizieren, die einen Test enthält.
- JUnit stellt eine Anmerkung mit dem Namen bereit @Prüfen, was sagt die JUnit dass die Public-Void-Methode, in der sie verwendet wird, als Testfall ausgeführt werden kann.
- Eine Testvorrichtung ist ein Kontext, in dem ein Testfall ausgeführt wird
- Um mehrere Tests in einer bestimmten Reihenfolge auszuführen, können Sie alle Tests an einem Ort kombinieren. Dieser Ort wird als Testsuite bezeichnet.
- JUnit stellt ein Tool zur Ausführung der Tests bereit, mit dem wir unsere Testfälle ausführen können, die als Test Runner bezeichnet werden.