list junit annotations
In diesem Tutorial wird alles über JUnit-Anmerkungen sowie ein Vergleich der Anmerkungen in JUnit 4 mit JUnit 5 erläutert:
In unserem vorherigen Tutorial haben wir die verschiedenen Möglichkeiten zum Ausführen von JUnit-Testfällen kennengelernt und gesehen, wie eine Testsuite erstellt und ausgeführt wird.
In diesem Tutorial lernen wir den herausragenden Aspekt von JUnit kennen, der aufgerufen wird Anmerkungen. Ab JUnit 4 sind Anmerkungen vorhanden, die JUnit sehr einfach, vorteilhafter und benutzerfreundlicher machen.
Anmerkungen ist eine Java-API, mit der JVM den Typ der in der Testklasse definierten Methode erkennen kann. Es gibt häufig verwendete Rückrufanmerkungen für Lebenszyklen.
=> Besuchen Sie hier, um JUnit von Grund auf neu zu lernen.
Was du lernen wirst:
JUnit Annotations - JUnit 4 vs JUnit 5
Eine Testausführung durchläuft verschiedene Phasen des Lebenszyklus, wie unten angegeben:
- Vor Beginn eines Tests müssen bestimmte Aktivitäten zur Initiierung einer Klasse ausgeführt werden.
- Bestimmte andere Aktivitäten, die ausgeführt werden müssen, bevor ein Testfall ausgeführt wird.
- Bestimmte Aktivitäten, die nach Durchführung des Tests ausgeführt werden müssen und
- Bestimmte Aktivitäten am Ende der Ausführung aller Tests in einer Klasse.
Um sicherzustellen, dass diese Aktivitäten in jeder Phase des Java-Lebenszyklus ausgeführt werden, müssen bestimmte benutzerdefinierte Methoden oder Funktionen vorhanden sein, die als „ Rückrufmethoden für den Lebenszyklus .
Das Verhalten dieser Rückrufmethoden für den Lebenszyklus wird durch die eingebaute Rückrufanmerkungen für den Lebenszyklus ' in JUnit verwendet.
Beispiel: Lassen Sie uns versuchen, es noch einfacher zu machen, indem wir diese Rückrufmethoden und Anmerkungen für den Lebenszyklus mit einem Beispiel von verknüpfen Testen eines Kaffeeautomaten.
- Eine Methode machineReady (), der prüft, ob Wasser, Milch und Kaffeebohnen verfügbar sind, bevor die Maschine eingeschaltet wird.
- Eine andere Methode startMachine (), der die Maschine einschaltet und möglicherweise einen neuen Pappbecher in die Maschine stellt.
- Ein Testfall, der die Heißes Wasser ()' Möglichkeit.
- Ein weiterer Testfall, der die Cappuccino ()' Möglichkeit.
- Ein weiterer Testfall, der die ExpressoCoffee ()' Möglichkeit.
- Eine andere Methode ' throwCup () ”, Der die gebrauchten Tassen in den Mülleimer wirft.
- Eine Methode auf Klassenebene “ throwTrashandSwitchOff () ”Wirft überlaufende Abfallflüssigkeit aus dem Tablett in das Becken und schaltet die Maschine aus.
Im obigen Beispiel folgt der Lebenszyklus des Tests wie folgt:
- startMachine () wird vor jedem Testfall ausgeführt - Heißes Wasser (), Cappuccino () und ExpressoCoffee () läuft.
- Jeder dieser Testfälle folgt ebenfalls der Methode throwCup ().
- Die Methoden machineReady () und throwTrashandSwitchOff () sind Methoden auf Klassenebene, die für eine Klasse nur einmal ausgeführt werden. Die Methode machineReady () wird einmal ausgeführt, während die Klasse die Ausführung initiiert. Die Methode throwTrashandSwitchOff () wird einmal ausgeführt, nachdem alle Testfälle vollständig ausgeführt wurden.
Nun stellt sich die Frage, ob es sich nur um Java-Methoden handelt:
Fragen und Antworten zum Interview mit Selenium Java
- Wie werden wir darauf bestehen, dass JVM läuft? machineReady () nur einmal auf Klassenebene und throwTrashandSwitchOff () am Ende der Klassenausführung?
- Wie werden wir JVM das wissen lassen? startMachine () und throwCup () muss vor dem Ausführen jedes Testfalls bzw. nach Abschluss jeder Testfallausführung ausgeführt werden?
- Wie können wir JVM dazu bringen, die Methoden zu identifizieren? Heißes Wasser (), Cappuccino () und ExpressoCoffee () sollen Testfälle ausgeführt werden?
Antwort: Die einzige Antwort auf die obigen Fragen ist, dass die Annotationen für den Lebenszyklus-Rückruf die erforderliche Magie bewirken.
(Nehmen wir zunächst an, dass wir diese Klasse in JUnit 4 erstellen.)
Die Lebenszyklusanmerkungen - @BeforeClass, @AfterClass, @Before, @After, und @Prüfung sind die wirklichen Antworten auf die obigen drei Fragen. Wir sind uns ziemlich sicher, dass Sie nach dem Lesen der folgenden Hinweise mit Rückrufanmerkungen für den Lebenszyklus und deren Workflow klar werden.
- Kommentieren Sie die Methode machineReady () mit @Vor dem Unterricht und JVM lässt es zu Beginn der Klasse einmal laufen.
- Kommentieren Sie die Methode Müll werfen () mit @Nach dem Unterricht und JVM lässt es am Ende der Klasse einmal laufen.
- Kommentieren Sie die Methode startMachine () mit @Vor und JVM führt es aus, bevor jeder Testfall ausgeführt wird.
- Kommentieren Sie die Methode throwCup () mit @Nach dem und JVM führt es nach der Ausführung jedes Testfalls aus.
- Kommentieren Sie jede dieser Methoden Heißes Wasser (), Cappuccino () und ExpressoCoffee () mit @Prüfung und JVM weiß, dass dies die Kerntestfälle für die auszuführende JUnit-Klasse sind.
Werfen wir einen kurzen Blick auf die Rückrufanmerkungen für den JUnit-Lebenszyklus für JUnit 4 und JUnit 5
JUNIT 4 ANMERKUNG | JUNIT 5 ANMERKUNG | |
---|---|---|
@ Wiederholter Test | 1.JUnit 5 unterstützt die wiederholte Ausführung der Testmethode für eine bestimmte Anzahl von Malen mithilfe der Annotation @RepeatedTest | |
@Vor | @BeforeEach | |
@Nach dem | @Nach jedem | |
@Vor dem Unterricht | @Vor allen | |
@Nach dem Unterricht | @Schließlich | |
@Prüfung | @Prüfung |
Sequentieller Workflow der Lebenszyklusanmerkungen
Im Folgenden wird der sequentielle Workflow der Lebenszyklusanmerkungen für JUnit 4 angegeben:
- Die mit @BeforeClass annotierte Methode wird zu Beginn der Klasse einmal ausgeführt.
- Die mit @Before kommentierte Methode wird ausgeführt, bevor Testfall 1 beginnt.
- Die mit @Test annotierte Methode Testcase1 ist der Testfall in der Klasse.
- Die mit @After kommentierte Methode wird ausgeführt, nachdem Testcase 1 die Ausführung abgeschlossen hat.
- Die mit @Before kommentierte Methode wird ausgeführt, bevor Testfall 2 beginnt.
- Die mit @Test annotierte Methode Testcase2 ist der Testfall in der Klasse.
- Die mit @After kommentierte Methode wird ausgeführt, nachdem Testcase 2 die Ausführung abgeschlossen hat.
- Die mit @AfterClass annotierte Methode wird am Ende der Klasse einmal ausgeführt, nachdem sowohl Testfall 1 als auch Testfall 2 ausgeführt wurden.
Der sequentielle Workflow der Lebenszyklusanmerkungen für JUnit 5 lautet wie folgt:
- Die mit @BeforeAll annotierte Methode wird zu Beginn der Klasse einmal ausgeführt.
- Die mit @BeforeEach kommentierte Methode wird ausgeführt, bevor Testfall 1 beginnt.
- Die mit @Test annotierte Methode Testcase1 ist der Testfall in der Klasse.
- Die mit @AfterEach kommentierte Methode wird ausgeführt, nachdem Testcase 1 die Ausführung abgeschlossen hat.
- Die mit @BeforeEach kommentierte Methode wird ausgeführt, bevor Testfall 2 beginnt.
- Die mit @Test annotierte Methode Testcase2 ist der Testfall in der Klasse.
- Die mit @AfterEach kommentierte Methode wird ausgeführt, nachdem Testcase 2 die Ausführung abgeschlossen hat.
- Die mit @AfterAll annotierte Methode wird am Ende der Klasse einmal ausgeführt, nachdem sowohl Testfall 1 als auch Testfall 2 ausgeführt wurden.
Ausarbeitung zu jeder Anmerkung
Lassen Sie uns in diesem Abschnitt einen tiefen Einblick in die Funktionsweise der einzelnen Lebenszyklus-Annotationen geben:
@Before (JUnit 4) / @ BeforeEach (JUnit 5):
- Die mit Anmerkungen versehene Methode wird vor der Ausführung jeder Testmethode in der Testklasse ausgeführt.
- Diese Anmerkung kann verwendet werden, wenn Sie die Ressourcen oder Testdaten unmittelbar vor Beginn jedes Tests einrichten möchten.
- Beispielsweise, Wenn eine JUnit-Testklasse 5 Testfälle enthält, wird die mit @ Before / @ BeforeEach kommentierte Methode vor jeder Ausführung des Testfalls fünfmal ausgeführt.
@ After (JUnit 4) / @ AfterEach (JUnit 5):
- Die mit Anmerkungen versehene Methode wird ausgeführt, nachdem jede Testmethode in der Testklasse ausgeführt wurde.
- Diese Anmerkung kann verwendet werden, wenn Sie nach jedem Testfall verwendete Ressourcen oder Testdaten freigeben möchten.
- Beispielsweise, Wenn eine JUnit-Testklasse 5 Testfälle enthält, wird die mit @ After / @ AfterEach kommentierte Methode 5 Mal nach der Ausführung der Testfälle ausgeführt.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5):
- Die mit Anmerkungen versehene Methode wird ausgeführt, bevor alle Testmethoden in einer Testklasse ausgeführt werden.
- Diese Anmerkung kann verwendet werden, wenn Sie Ressourcen oder Testdaten auf Klassenebene einrichten möchten.
- Da diese Methode mit @ BeforeClass kommentiert ist, wird @ BeforeAll nur einmal für eine Testklasse ausgeführt und die Kopie der Methode wird für die gesamte Klasse freigegeben, und die Methode muss angegeben werden statisch.
- Beispielsweise, Wenn eine JUnit-Testklasse 5 Testfälle enthält, wird die mit @ BeforeClass / @ BeforeAll kommentierte Methode einmal pro Testklasse ausgeführt, bevor ein Testfall gestartet wird.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- Die mit Anmerkungen versehene Methode wird ausgeführt, nachdem alle Testmethoden in einer Testklasse ausgeführt wurden.
- Diese Anmerkung kann verwendet werden, wenn Sie die verwendeten Ressourcen oder Testdaten auf Klassenebene freigeben möchten.
- Da diese Methode mit @ AfterClass kommentiert ist / @ AfterAll nur einmal für eine Testklasse ausgeführt wird und die Kopie der Methode für die gesamte Klasse freigegeben wird, muss die Methode angegeben werden statisch.
- Beispielsweise, Wenn eine JUnit-Testklasse 5 Testfälle enthält, wird die mit @ AfterClass / @ AfterAll kommentierte Methode einmal pro Testklasse ausgeführt, nachdem alle Testfälle vollständig ausgeführt wurden.
@ Test (JUnit 4 & JUnit 5):
- Die Annotation @Test ist sowohl für JUnit 4 als auch für JUnit 5 üblich. Die mit Annotationen versehenen Methoden repräsentieren die Testfälle in der Klasse.
- In einer JUnit-Klasse können mehrere Methoden mit @Test versehen sein. Dies bedeutet, dass eine Klasse mehrere Testfälle haben kann.
- Es gibt verschiedene Attribute oder Parameter zum Testen, die übergeben werden könnten. Sie können eine erzwungene Zeitüberschreitung für einen Testfall hinzufügen oder eine Ausnahme hinzufügen. Dies wird in einem separaten Tutorial ausführlich behandelt.
- Die mit Anmerkungen versehene Methode kann nicht privat oder statisch sein und keinen Wert zurückgeben.
- Die @ Test-Methode muss in JUnit 4 als öffentlich deklariert werden, während Junit 5 einen Testfall zulässt, der ohne den Zugriffsmodifikator 'public' definiert wurde, da 'no access modifier' standardmäßig als 'public' betrachtet wird.
Grundlegendes JUNIT-Testbeispiel
Eine grundlegende JUNIT 4 Beispiel für Anmerkungen @BeforeClass, @Before, @Test, @After und @AfterClass wurde durch den Code mit seiner Erläuterung in unserem früheren Tutorial zu 'Test Fixtures' gezeigt.
Schauen wir uns die Grundlagen an Einheit 5 Programm zur Demonstration der Funktionsweise der Lifecycle-Rückrufanmerkungen @BeforeAll, @BeforeEach, @Test, @AfterEach und @AfterAll.
Code für JUnit5Program.java:
public class JUnit5Program { @BeforeAll public static void preClass() { System.out.println('@BeforeAll – the annotated method runs once before all other methods execute'); } @BeforeEach public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('@BeforeEach – the annotated method executes before each test '); } @Test public void test_JUnit1() { System.out.println('@Test – this is test case 1'); } @Test public void test_JUnit2() { System.out.println('@Test – this is test case 2'); } @Test public void test_JUnit3() { System.out.println('@Test – this is test case 3'); } @AfterEach public void tearDown() { System.out.println('@AfterEach – the annotated method executes after each test executes'); System.out.println('_______________________________________________________
'); } @AfterAll public static void postClass() { System.out.println('@AfterAll – the annotated method runs once after all other methods execute'); } }
Bei der Ausführung der Klassendatei wird das folgende Ergebnis im Konsolenfenster angezeigt.
Zusätzliche Anmerkungen - JUnit 4 vs JUnit 5
Es gibt viele zusätzliche Anmerkungen, die für bestimmte Zwecke verwendet werden. Wir werden die Liste der Anmerkungen für JUnit 4 vs JUnit 5 und den Zweck, dem sie dienen, kurz sehen.
Zu diesen Anmerkungen finden Sie in unseren nächsten Tutorials ein detailliertes Tutorial.
JUNIT 4 ANMERKUNG | JUNIT 5 ANMERKUNG | Beschreibung in Kürze |
---|---|---|
@FixMethodOrder | @TestMethodOrder & @Order | 1. Mit diesen Anmerkungen kann der Benutzer die Ausführungsreihenfolge der Methoden innerhalb einer Testklasse auswählen |
@Rule & @ClassRule | @ExtendWith | 1. @Rule - Die Anmerkung wird von der Klasse TestRule erweitert, mit deren Hilfe bestimmte Regeln auf die Testfälle angewendet werden können. 2. Zum Beispiel: Das Erstellen eines temporären Ordners vor der Ausführung des Testfalls und das Löschen des Ordners nach der Ausführung kann über eine Regel festgelegt werden. 3. @Rule ist nur in JUnit 4 verfügbar, das in JUnit 5 Vintage verwendet werden kann. @ExtendWith bietet jedoch eine genauere Funktion für JUnit 5 4. Ebenso kann mit @Rule ein globales Timeout festgelegt werden. |
N / A | @TestFactory | 1. Diese Anmerkung wird nur von JUnit 5 unterstützt und hilft bei der Erstellung von dynamischen Tests oder Laufzeitprüfungen. 2. Es gibt einen Datenstrom als Sammlung zurück und kann keine Lifecycle-Callback-Annotationen verwenden |
N / A | @ Verschachtelt | 1.Diese Anmerkung wird nur von JUnit Jupiter unterstützt 2. Es hilft uns, verschachtelte Testfälle zu erstellen. 3. Zum Beispiel kann Klasse 1 mit Testfall 1 eine @ verschachtelte Klasse 2 mit Testfall 2 haben. Dies macht Testfall 2 zu einem verschachtelten Testfall zu Testfall 1. Daher wird Testfall 1 ausgeführt, dann wird Testfall 2 ausgeführt. 4.Wenn die Annotation @Nested nicht verwendet wird, wird die verschachtelte Klasse nicht ausgeführt. |
@Kategorie | @Etikett | 1.Diese Anmerkung hilft beim Markieren und Filtern der Tests 2. Sie können Tests zur Ausführung einschließen oder ausschließen, indem Sie nach den Kategorien filtern, in die sie fallen. |
@RunWith (Parameterized.class) @ Parameterized.Parameters | @ParameterizedTest und @ValueSource | 1. Diese Anmerkung wird verwendet, um eine Methode mit Testdatenvariationen mehrmals auszuführen. 2.JUnit 4 unterstützt @RunWith und @Parameters, während JUnit 5 Jupiter @ParameterizedTest mit @ValueSource unterstützt |
@Anzeigename | 1. Ein benutzerdefinierter Name kann einer Testmethode oder -klasse zu Anzeigezwecken zugewiesen werden. | |
@TestInstance (LifeCycle.PER_CLASS) und @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5 unterstützt die Konfiguration des Lebenszyklus von Tests. 2. Sowohl JUnit 4 als auch JUnit 4 folgen dem Standard-Rückruf pro Methodenlebenszyklus, während auch die Konfiguration pro Klasse durchgeführt werden kann. |
Referenzen => Einheit 4 , Einheit 5
Fazit
- Wir haben etwas über die Lebenszyklus-Rückrufanmerkungen und den sequentiellen Workflow gelernt, in dem die Testmethoden basierend auf ihren Anmerkungen ausgeführt werden.
- Wir haben die für JUnit 4 verwendeten Anmerkungen und die für JUnit 5 verwendeten Anmerkungen gelernt.
- Wir haben auch Informationen zu zusätzlichen Anmerkungen erhalten, die JUnit 4 unterstützt, und zu solchen, die nur JUnit 5 unterstützen.
=> Sehen Sie sich hier die einfache JUnit-Schulungsserie an.
Literatur-Empfehlungen
- Was ist ein JUnit-Testgerät? Tutorial mit JUnit 4-Beispielen
- JUnit-Tests: So schreiben Sie JUnit-Testfälle mit Beispielen
- JUnit Tutorial für Anfänger - Was ist JUnit Testing?
- Laden Sie JUnit In Eclipse herunter, installieren Sie es und konfigurieren Sie es
- Mehrere Möglichkeiten zum Ausführen von JUnit-Tests
- Einführung in JUnit Framework und seine Verwendung in Selenium Script - Selenium Tutorial # 11
- Verdeckte Liste in Array und andere Sammlungen in Java
- Java-Listenmethoden - Liste sortieren, Enthält, Liste hinzufügen, Liste entfernen