JUnit-Testfälle @Before @BeforeClass Annotation

Inhaltsverzeichnis:

Anonim

JUnit ist das beliebteste Unit-Testing-Framework in Java. Es wird ausdrücklich für Unit-Tests empfohlen. JUnit benötigt keinen Server zum Testen der Webanwendung, wodurch der Testprozess schnell wird.

Das JUnit-Framework ermöglicht auch die schnelle und einfache Generierung von Testfällen und Testdaten. Das org.Junit- Paket besteht aus vielen Schnittstellen und Klassen für JUnit-Tests wie Test, Assert, After, Before usw.

Was ist eine Testvorrichtung?

Bevor wir verstehen, was ein Testgerät ist, wollen wir den folgenden Code studieren

Dieser Code dient zum Ausführen von zwei Testfällen in einer einfachen Datei.

öffentliche Klasse OutputFileTest {private Dateiausgabe;Ausgabe = neue Datei (…);output.delete ();public void testFile1 () {// Code zur Überprüfung von Testfall 1}}output.delete ();Ausgabe = neue Datei (…);public void testFile2 () {// Code zur Überprüfung von Testfall 2}}output.delete ();}}

Einige Probleme hier

  • Der Code ist nicht lesbar
  • Der Code ist nicht einfach zu pflegen.
  • Wenn die Testsuite komplex ist, kann der Code logische Probleme enthalten.

Vergleichen Sie denselben Code mit JUnit

öffentliche Klasse OutputFileTest{private Dateiausgabe;@Before public void createOutputFile (){Ausgabe = neue Datei (…);}}@Nach öffentlicher Leere deleteOutputFile (){output.delete ();}}@Test public void testFile1 (){// Code für Testfallziel}}@Test public void testFile2 (){// Code für Testfallziel}}}}

Der Code ist weitaus besser lesbar und wartbar. Die obige Codestruktur ist eine Testvorrichtung.

Ein Testgerät ist ein Kontext, in dem ein Testfall ausgeführt wird. Typischerweise umfassen Testvorrichtungen:

  • 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
    1. Zuordnung ( Setup )
    2. Aufhebung der Zuordnung ( Teardown ).

Setup und Teardown

  • Normalerweise gibt es einige wiederholte Aufgaben, die vor jedem Testfall ausgeführt werden müssen. Beispiel: Erstellen Sie eine Datenbankverbindung.
  • Ebenso kann es am Ende jedes Testfalls zu wiederholten Aufgaben kommen. Beispiel: Bereinigen, sobald die Testausführung beendet ist.
  • JUnit bietet Anmerkungen, die beim Einrichten und Herunterfahren helfen. Es stellt sicher, dass Ressourcen freigegeben werden und das Testsystem für den nächsten Testfall bereit ist.

Diese Anmerkungen werden unten erläutert.

Einrichten

@Before Annotation wird für eine Methode verwendet, die Java-Code enthält und vor jedem Testfall ausgeführt wird. dh es wird vor jeder Testausführung ausgeführt.

Teardown (unabhängig vom Urteil)

@After Annotation wird für eine Methode verwendet, die Java-Code enthält und nach jedem Testfall ausgeführt wird. Diese Methoden werden auch dann ausgeführt, wenn im Testfall oder bei Assertionsfehlern Ausnahmen ausgelöst werden.

Hinweis:

  • Es ist zulässig, eine beliebige Anzahl von oben aufgeführten Anmerkungen zu haben.
  • Alle mit @Before kommentierten Methoden werden vor jedem Testfall ausgeführt, können jedoch in beliebiger Reihenfolge ausgeführt werden.
  • Sie können die Methoden @Before und @After von einer Superklasse erben. Die Ausführung lautet wie folgt: Dies ist ein Standardausführungsprozess in JUnit.
  1. Führen Sie die @ Before-Methoden in der Oberklasse aus
  2. Führen Sie die @ Before-Methoden in dieser Klasse aus
  3. Führen Sie eine @ Test-Methode in dieser Klasse aus
  4. Führen Sie die @ After-Methoden in dieser Klasse aus
  5. Führen Sie die @ After-Methoden in der Oberklasse aus

Beispiel: Erstellen einer Klasse mit Datei als Testgerät

öffentliche Klasse OutputFileTest{private Dateiausgabe;@Before public void createOutputFile (){Ausgabe = neue Datei (…);}}@Nach öffentlicher Leere deleteOutputFile (){output.delete ();}}@Test public void testFile1 (){// Code für Testfallziel}}@Test public void testFile2 (){// Code für Testfallziel}}}}

Im obigen Beispiel ist die Ausführungskette wie folgt:

  1. createOutputFile ()
  2. testFile1 ()
  3. deleteOutputFile ()
  4. createOutputFile ()
  5. testFile2 ()
  6. deleteOutputFile ()

Annahme: testFile1 () wird vor testFile2 () ausgeführt - was nicht garantiert ist.

Einmaliges Setup

  • Es ist möglich, eine Methode nur einmal für die gesamte Testklasse auszuführen, bevor einer der Tests ausgeführt wird, und vor allen @ Vor- Methoden.
  • "Einmal eingerichtet" ist nützlich, um Server zu starten, die Kommunikation zu öffnen usw. Es ist zeitaufwändig, Ressourcen für jeden Test zu schließen und erneut zu öffnen.
  • Dies kann mithilfe der Annotation @BeforeClass erfolgen
@BeforeClass public static void Method_Name () {// Klassen-Setup-Code hier}}

Einmal abreißen

  • Ähnlich wie beim einmaligen Einrichten ist auch eine einmalige Bereinigungsmethode verfügbar. Es wird ausgeführt, nachdem alle Testfallmethoden und @After- Annotationen ausgeführt wurden.
  • Es ist nützlich, um Server zu stoppen, Kommunikationsverbindungen zu schließen usw.
  • Dies kann mithilfe der Annotation @AfterClass erfolgen
@AfterClass public static void Method_Name (){// Klassenbereinigungscode hier}}

JUnit Test Suites

Wenn Sie mehrere Tests in einer bestimmten Reihenfolge ausführen möchten, können Sie alle Tests an einem Ort kombinieren. Dieser Ort wird als Testsuite bezeichnet. Weitere Informationen zum Ausführen von Testsuiten und zur Verwendung in JUnit finden Sie in diesem Lernprogramm.

Junit Test Runner

JUnit bietet ein Tool zur Ausführung Ihrer Testfälle.

  • Die JUnitCore- Klasse wird verwendet, um diese Tests auszuführen.
  • Eine von org.junit.runner.JUnitCore bereitgestellte Methode namens runClasses wird zum Ausführen einer oder mehrerer Testklassen verwendet.
  • Der Rückgabetyp dieser Methode ist das Ergebnisobjekt ( org.junit.runner.Result ), mit dem auf Informationen zu den Tests zugegriffen wird. Weitere Informationen finden Sie im folgenden Codebeispiel.
öffentlicher Klassentest {public static void main (String [] args) {Ergebnis result = JUnitCore.runClasses (CreateAndSetName.class);for (Fehler Fehler: result.getFailures ()) {System.out.println (fail.toString ());}}System.out.println (result.wasSuccessful ());}}}}

Im obigen Code wird das "Ergebnis" -Objekt verarbeitet, um Fehler und erfolgreiche Ergebnisse von Testfällen zu erhalten, die wir ausführen.

Erstes JUnit-Programm

Faire Kenntnisse in SDLC, Java-Programmierung und Grundlagen des Softwaretestprozesses helfen beim Verständnis des JUnit-Programms.

Lassen Sie uns Unit Testing anhand eines Live-Beispiels verstehen. Wir müssen eine Testklasse mit einer Testmethode erstellen, die wie unten angegeben mit @Test versehen ist :

MyFirstClassTest.java

Paket guru99.JUnit;statische org.JUnit.Assert importieren. *;import org.JUnit.Test;öffentliche Klasse MyFirstClassTest {@Prüfungpublic void myFirstMethod () {String str = "JUnit funktioniert einwandfrei";assertEquals ("JUnit funktioniert einwandfrei", str);}}}}

TestRunner.java

Um unsere Testmethode (oben) auszuführen, müssen wir einen Testläufer erstellen. Im Testläufer müssen wir die Testklasse als Parameter in die runclasses () -Methode von JUnitCore einfügen. Das Testergebnis wird zurückgegeben, je nachdem, ob der Test bestanden wurde oder nicht.

Weitere Einzelheiten hierzu finden Sie im folgenden Code:

Paket guru99.JUnit;import org.JUnit.runner.JUnitCore;import org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;öffentliche Klasse TestRunner {public static void main (String [] args) {Ergebnis result = JUnitCore.runClasses (MyFirstClassTest.class);for (Fehler Fehler: result.getFailures ()) {System.out.println (fail.toString ());}}System.out.println ("Result ==" + result.wasSuccessful ());}}}}

Ausgabe

Sobald TestRunner.java unsere Testmethoden ausführt, wird die Ausgabe als fehlgeschlagen oder bestanden ausgegeben. Nachfolgend finden Sie eine Erklärung zur Ausgabe:

  1. In diesem Beispiel wird nach dem Ausführen von MyFirstClassTest.java der Test bestanden und das Ergebnis ist grün.
  2. Wenn es fehlgeschlagen wäre, hätte es das Ergebnis als Rot anzeigen sollen, und ein Fehler kann in der Fehlerverfolgung beobachtet werden. Siehe unten JUnit gui:

Zusammenfassung :

  • JUnit ist ein Framework, das mehrere Anmerkungen unterstützt, um eine Methode zu identifizieren, die einen Test enthält.
  • JUnit stellt eine Annotation mit dem Namen @Test bereit, die der JUnit mitteilt, dass die öffentliche Void-Methode, in der sie verwendet wird, als Testfall ausgeführt werden kann.
  • Ein Testgerät 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 bietet ein Tool zur Ausführung der Tests, mit dem wir unsere als Test Runner bezeichneten Testfälle ausführen können.