what is junit test fixture
In diesem Tutorial wird erklärt, wann, warum und wie JUnit Test Fixture mit einfachen JUnit Test Fixture-Beispielen verwendet wird, um das Konzept besser zu verstehen:
Wir werden lernen -
- Wann und warum müssen wir Test Fixture verwenden?
- Wie wird es in unserem Code für den JUnit-Test verwendet?
- Einige Beispiele zum Verständnis des Begriffs „Test Fixture“, die parallel zu einem Vorsprung bei JUnit 4-Lebenszyklusanmerkungen wie @Before, @After, @BeforeClass, @AfterClass und @Test kaskadiert sind.
=> Überprüfen Sie ALLE JUnit-Tutorials hier.
Was du lernen wirst:
JUnit-Testvorrichtung
Wenn eine JUnit-Klasse mehrere Testfälle enthält, kann es ein oder mehrere gemeinsame Objekte geben, die von allen Testfällen verwendet werden. In diesem Fall kann es bestimmte Funktionen geben, die in allen Testfällen gemeinsam sind.
Dies bedeutet nicht, dass die Testobjekte von allen Testfällen gemeinsam genutzt werden müssen. Die in einem Test vorgenommene Änderung an dem Objekt muss nicht für alle Tests freigegeben werden, da diese Tests unabhängig sind und gemäß ihrer festgelegten Priorität in einer anderen Reihenfolge ausgeführt werden können.
Wie öffne ich eine SWF-Datei auf Chrome?
Das ganzheitliche Verständnis der Begriff „Prüfvorrichtung“ ist ein fester Zustand in einem Code oder eine Reihe fester Schritte in einem Code, der als Vorbedingung verwendet wird, und einige andere Sätze von Schritten, die als Nachbedingung für alle Tests verwendet werden.
Mit anderen Worten, wir identifizieren die Sätze von Anweisungen, die für alle Tests wiederholt werden, und versuchen daher, eine feste Umgebung für die Ausführung unserer Testmethoden festzulegen.
Das Zweck Durch die Verwendung von Test Fixture wird die Duplizierung des gemeinsamen Codes für alle Testfälle vermieden.
Beispieltestfälle für Bankanwendungen
Versuchen wir, die praktische Implementierung des Testgeräts in einem JUnit-Test zu verstehen.
setUp () -Methode
- Es gibt Tests, bei denen bestimmte Objekte (Zeichenfolge, Ganzzahl oder ArrayList oder ein beliebiges Objekt) initialisiert werden müssen. Sie können eine Methode erstellen public void setUp () in dem Sie die Instanzvariablen für die allgemeinen Objekte deklarieren können. Platzieren Sie diese setUp () -Methode unter der Annotation @Vor . Mit der Annotation @Before führt das Framework vor jeder Testfallausführung die Methode setUp () aus.
- Die setUp () -Methode kann auch verwendet werden, wenn Sie einen Browser mit einer bestimmten URL starten möchten. Als ersten Schritt führen Sie einen Testfall aus, der auf die Anmeldung bei der Anwendung mit vordefinierten Anmeldeinformationen folgt.
tearDown () -Methode
- Wenn Sie in einem Test externe Ressourcen zugewiesen haben, sollten Sie daran denken, auch die Ressourcen freizugeben. Die Teardown () -Methode könnte für die Bereinigung der Objekte hinzugefügt werden, nachdem die Testfallausführung abgeschlossen ist. Fügen Sie ähnlich wie bei der setUp () -Methode eine Methode hinzu öffentlicher nichtiger Abriss () unter @Nach dem Anmerkung. Das JUnit-Framework stellt sicher, dass nach jedem Testfall die Methode unter @After sicher ausgeführt wird. Die im Test verwendeten Objekte müssen in der Teardown () -Methode auf NULL gesetzt werden, damit der Müll aus den Tests gesammelt wird.
- Ein weiterer guter Kandidat für die Bereinigung der Objekte besteht darin, einen Browser in Aktion zu beenden, nachdem der Testfall abgeschlossen ist, und den Speicher freizugeben, indem die verwendeten Objekte zerstört werden.
- Die Methodennamen setUp () und tearDown () sind nur benutzerdefinierte Namen. Sie können einen beliebigen Methodennamen festlegen. Es sind nur die mit der Methode verwendeten Anmerkungen, die die Reihenfolge des Testlaufs bestimmen.
Beispiele für JUnit-Testvorrichtungen
In diesem Abschnitt werden wir zwei Beispiele für den JUnit 4-Test durchgehen und versuchen zu verstehen, wie der Ansatz von Testvorrichtungen in unserem Code zusammen mit der Abfolge verschiedener Lebenszyklusanmerkungen @Before, @After, @BeforeClass, @AfterClass, verwendet wird. und @Test.
Natürlich wird es ein separates Tutorial zu Anmerkungen geben, in dem erläutert wird, was diese sind und wie die einzelnen Anmerkungen funktionieren. Bleiben wir ab sofort beim Verständnis der Verwendung der Testvorrichtung im Code.
JUnit 4 Test - Beispiel 1
In diesem Beispiel haben wir die Testvorrichtungen in der Klasse mit drei Testfällen. Die Methode setUp () mit der Annotation @Before und die Methode tearDown () mit der Annotation @After.
Code:
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; public class JUnitProgram { @Before public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('This is the setUp() method that runs before each testcase'); } @Test public void test_JUnit1() { System.out.println('This is the testcase test_JUnit1() in this class'); } @Test public void test_JUnit2() { System.out.println('This is the testcase test_JUnit2() in this class'); } @Test public void test_JUnit3() { System.out.println('This is the testcase test_JUnit3() in this class'); } @After public void tearDown() { System.out.println('This is the tearDown() method that runs after each testcase'); System.out.println('_______________________________________________________
'); } }
Das resultierende Konsolenfenster sieht wie folgt aus:
Das Konsolenfenster macht deutlich, dass vor jedem Testlauf die Methode setUp () ausgeführt wird und nach Abschluss jedes Tests die Methode tearDown () ausgeführt wird.
Somit ist die Reihenfolge der Ausführung pro Anmerkung für jede Testmethode:
- @Vor
- @Prüfung
- @Nach dem
Denken Sie daran, dass die Tests hier in sequenzieller Reihenfolge ausgeführt wurden, d. H. Test_JUnit1 (), test_JUnit2 (), test_JUnit3 (). Für den Test ist keine Sequenz definiert, daher können sie in beliebiger Reihenfolge ausgeführt werden. Jeder Test ist vom anderen Test isoliert.
JUnit 4 Test - Beispiel 2
Lassen Sie uns hier schnell sehen, wie wir eine Methode haben können, die zum ersten Mal in einer Klasse einmal ausgeführt wird, und eine andere Methode, die einmal ausgeführt wird, nachdem alle Tests für die Klasse ausgeführt wurden.
Code:
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println('This is the preClass() method that runs one time before the class'); } @Before public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('This is the setUp() method that runs before each testcase'); } @Test public void test_JUnit1() { System.out.println('This is the testcase test_JUnit1() in this class'); } @Test public void test_JUnit2() { System.out.println('This is the testcase test_JUnit2() in this class'); } @Test public void test_JUnit3() { System.out.println('This is the testcase test_JUnit3() in this class'); } @After public void tearDown() { System.out.println('This is the tearDown() method that runs after each testcase'); System.out.println('_______________________________________________________
'); } @AfterClass public static void postClass() { System.out.println('This is the postClass() method that runs one time after the class'); } }
Wir haben die preClass () -Methode unter @BeforeClass-Annotation hinzugefügt. Diese Methode wird nur einmal für eine Klasse ausgeführt, bevor der Test ausgeführt wird. Es wird ausgeführt, noch bevor die Methode unter @Before ausgeführt wird.
Die postClass () -Methode unter der Annotation @AfterClass wird am Ende einmal ausgeführt, wenn alle Tests einschließlich des Tests unter @After ausgeführt und abgeschlossen wurden.
Die Reihenfolge des Testlaufs ist wie folgt:
- @Vor dem Unterricht
- @Vor
- @Prüfung
- @Nach dem
- @Nach dem Unterricht
Die Methoden unter @BeforeClass und @AfterClass werden üblicherweise von der Klasse gemeinsam genutzt, weshalb die Methoden nicht als deklariert sind statisch dann gibt es eine Initialisierungsfehler bei Durchführung des Tests.
Wie bekomme ich eine gefälschte E-Mail?
Siehe den folgenden Screenshot, in dem wir die preClass () -Methode unter @BeforeClass-Annotation als nicht festgelegt haben statisch und dadurch ist der Test bei der Ausführung fehlerhaft.
Möglicherweise wird im Ergebnis ein Initialisierungsfehler angezeigt, der beim Markieren der Methode als statisch behoben werden kann. Gleiches gilt für die Methode postClass () unter @ AnnfterClass-Annotation.
Fazit
Wir haben versucht, einen Kontext für die guten Programmierpraktiken zu schaffen, die bei der Implementierung des zu befolgen sind Testvorrichtung Ansatz und ein grundlegendes Verständnis der Verwendung und der Reihenfolge der Ausführung für die Lebenszyklusanmerkungen.
In unserem nächsten Tutorial erfahren wir mehr über die verschiedene Arten der Ausführung von JUnit-Tests in Eclipse. Bleiben Sie also auf dem Laufenden, wenn wir mit interessanteren Aspekten von JUnit fortfahren.
=> Hier finden Sie A-Z der JUnit-Schulungsanleitungen.
Literatur-Empfehlungen
- JUnit-Tests: So schreiben Sie JUnit-Testfälle mit Beispielen
- JUnit Tutorial für Anfänger - Was ist JUnit Testing?
- Python DateTime Tutorial mit Beispielen
- Java String enthält () Method Tutorial mit Beispielen
- C # Using Statement und C # Virtual Method Tutorial mit Beispielen
- Einführung in JUnit Framework und seine Verwendung in Selenium Script - Selenium Tutorial # 11
- Selenium Find Element By Text Tutorial mit Beispielen
- Java Array Length Tutorial mit Codebeispielen