Ein Anfängerleitfaden zu JUnit 5

JUnit 5 ist ein Software-Testframework, das von Entwicklern verwendet wird, um ihren Code zu unit testen. Es handelt sich um ein auf Java basierendes Framework, das das Schreiben und Ausführen von Tests auf der Java-Plattform ermöglicht, einschließlich eines integrierten Reporters, der die Testergebnisse anzeigt.

JUnit kann für die Automatisierungstests für zwei Hauptzwecke verwendet werden:

  1. Testen, ob die Software so funktioniert, wie es erwartet wird
  2. Fehler im Code finden und melden und sie so schnell wie möglich beheben

In diesem Blog werden wir uns auf das Setup, die Konfiguration und die grundlegenden Methoden von JUnit 5 konzentrieren und darüber lernen.

Was ist JUnit 5?

JUnit 5 ist die neueste Version des JUnit-Testframeworks. Es unterstützt Java 8 und neuere Versionen, bietet Platz für verschiedene Teststile und bietet eine moderne Grundlage für Entwicklerseitige Tests auf der JVM.

Der Hauptvorteil von JUnit ist seine Modularität, da es mehrere Module enthält, die es den Entwicklern ermöglichen, verschiedene Komponenten der Software leicht zu testen. Es kann auch verwendet werden, um einzelne Klassen der Anwendung anstelle der gesamten Anwendung zu testen.

Features von JUnit 5

Die folgenden Funktionen von JUnit 5 sind einige der beliebten und wichtigen Funktionen, die es von anderen Unit-Testframeworks unterscheiden.

Feature Description Annotations/Method
Test Suites

Test-Suiten sind im Grunde eine Gruppe von Tests, wie Smoke, Sanity, oder eine Gruppe von Tests, die mit einem bestimmten Feature zusammenhängen.

JUnit 5 ermöglicht die Erstellung von Test-Suiten, die gemeinsam ausgeführt werden können.

Um Test-Suiten zu verwenden, müssen wir eine JUnit Platform Suite-Abhängigkeit hinzufügen und die folgenden Annotationen verwenden.
@SelectPackages,
@SelectClasses, @Suite
Assertions Assertions werden verwendet, um das erwartete Verhalten der Software zu überprüfen. JUnit 5 bietet eingebaute Assert-Methode, die dabei helfen können, die Überprüfungen einfach durchzuführen. Es gibt mehrere Assert-Methode in der Klasse import org.junit.jupiter.api.Assertions;.
Einige der Methoden sind unten aufgeführt:
assertTrue(), assertFalse(),
assertEquals(), assertAll(), assertNotEquals()
Testausführungsreihenfolge Passen Sie die Testausführungsreihenfolge an. Es ermöglicht dem Entwickler, die Kontrolle über die Testausführung zu übernehmen und die Tests in einer bestimmten Reihenfolge auszuführen, wie erforderlich. @TestMethodOrder, @Order,
@TestClassOrder
Ausnahmeprüfung Führt eine Ausnahmeprüfung durch, die überprüft, ob die erforderliche Ausnahme im Test ausgelöst wird. Der folgende Methode aus der
import org.junit.jupiter.api.Assertions;
-Klasse wird verwendet:
assertThrows()
Test Abhängigkeiten Testabhängigkeiten ermöglichen die sequenzielle Prüfung, indem sie die Möglichkeit bieten, dass Testmethoden voneinander abhängig sind. Das bedeutet, dass die nächste Testmethode, die von der vorherigen Testmethode abhängt, erst ausgeführt wird, wenn die vorherige bestanden wurde. Diese Funktion ist hilfreich beim Schreiben von Integrationstests. @TestInstance
Tests deaktivieren Deaktiviert Tests oder Testklassen. @Disabled
Timeouts Einen Test fehlschlagen lassen, wenn seine Ausführungszeit eine bestimmte Dauer überschreitet. @Timeout
Berichte Bietet einen integrierten Berichtersteller zur Analyse von Testergebnissen und zeigt detaillierte Informationen an. Generiert eine .html-Datei mit den Testausführungsergebnissen. N/A

JUnit 4 vs. JUnit 5

Mit der Veröffentlichung der neuesten Version von JUnit, d.h. JUnit 5, wurden dem Framework mehrere Änderungen und neue Funktionen hinzugefügt. Die Unterschiede zwischen den beiden Versionen sind in der folgenden Tabelle aufgeführt:

criteria JUNIT4 JUNIT5
Architektur Alles war in einer einzigen JAR-Datei verpackt. In 3 Unterprojekte unterteilt:
– JUnit-Plattform
– JUnit Jupiter
– JUnit Vintage
JDK-Version Anforderungen Erfordert Java 5 oder höher Erfordert Java 8 oder höher
Integration von Drittanbietern Keine Unterstützung für die Integration von Drittanbietern für Plugins und IDEs Eigenes Unterprojekt (JUnit-Plattform) für Integrationen von Drittanbietern
Unterstützung für geschachtelte Tests Keine Annotation zum Schreiben von geschachtelten Tests bereitgestellt Bietet die @Nested Annotation zum Schreiben von geschachtelten Tests
Unterstützung für die Registrierung benutzerdefinierter Erweiterungen Keine Unterstützung für benutzerdefinierte Erweiterungen Bietet die @ExtendWith Annotation zur Registrierung benutzerdefinierter Erweiterungen
Änderungen an häufig verwendeten Annotationen @BeforeClass
@AfterClass
@Before
@After
@Ignore
@BeforeAll
@AfterAll
@BeforeEach
@AfterEach
@Disabled
Änderungen an Annotationen für Tagging und Filtern @Category Annotation wird verwendet @Tag Annotation wird verwendet
Test-Suiten @RunWith und @Suite Annotationen wurden verwendet Die Annotationen @Suite, @SelectPackages und @SelectClasses werden verwendet

Erste Schritte mit JUnit 5

In diesem Abschnitt werden wir lernen, wie man Testfälle mit JUnit 5 unter Verwendung der IntelliJ IDE schreibt. Da sie bereits mit JUnit 5 gebündelt ist, müssen wir keine zusätzliche Installation durchführen, um sie zu verwenden.

Wir müssen ein neues Maven-Projekt erstellen, die JUnit 5-Abhängigkeiten hinzufügen und sofort mit dem Schreiben der Tests beginnen.

Hinzufügen der JUnit-Abhängigkeiten im Maven-Projekt

Die folgenden JUnit 5-Abhängigkeiten müssen in der pom.xml-Datei hinzugefügt werden:

  • JUnit Jupiter Engine
  • JUnit Jupiter API
  • JUnit Platform Suite (Aggregator)
  • JUnit Jupiter Params
XML

 

Hier ist die vollständige pom.xml-Datei

XML

 

Nachdem die Abhängigkeiten hinzugefügt wurden, sind wir bereit, den Test zu schreiben. Bevor wir jedoch mit dem Schreiben der Tests mit JUnit 5 beginnen, wollen wir zuerst die grundlegenden Annotationen verstehen, die uns dabei helfen können, das Test-Suite effizient einzurichten und Tests wie gewünscht auszuführen.

Grundlegende Annotationen, die in JUnit 5 verwendet werden

Die folgenden sind grundlegende Annotationen, die von Entwicklern am häufigsten verwendet werden, während sie Tests mit JUnit 5 schreiben.

@BeforeAll Annotation

Die @BeforeAll-Annotation zeigt an, dass die annotierte Methode vor allen @Test, @RepeatedTest, @ParameterizedTest oder @TestFactory-Methoden in der aktuellen Klasse ausgeführt werden soll. Sie muss eine statische Methode in der Testklasse sein.

@BeforeAll dient als Ersatz für die @BeforeClass-Annotation, die in JUnit 4.x verwendet wurde

Syntax:

Java

 

@BeforeEach-Annotation

Die @BeforeEach-Annotation zeigt an, dass die annotierte Methode vor jedem Aufruf von @Test, @RepeatedTest, @ParameterizedTest oder @TestFactory-Methoden in der aktuellen Klasse ausgeführt werden soll.

Sie ist Teil der Methoden des Testlebenszyklus und ersetzt die @Before-Annotation, die in JUnit 4 verwendet wurde.

Syntax:

Java

 

@AfterAll-Annotation

Die @AfterAll-Annotation zeigt an, dass die annotierte Methode aufgerufen werden soll, nachdem alle Tests in der aktuellen Klasse ausgeführt wurden. Sie muss eine statische Methode sein und wird als Aufräummethode in der Testklasse verwendet.

@AfterAll ist der Ersatz für die @AfterClass-Annotation in JUnit 4.

Syntax:

Java

 

@AfterEach-Annotation

Die @AfterEach-Annotation zeigt an, dass die annotierte Methode nach jeder @Test, @RepeatedTest, @ParameterizedTest oder @TestFactory-Methode in der aktuellen Klasse ausgeführt werden soll.

Es dient als Ersatz für die JUnit 4 @After Annotation.

Syntax:

Java

 

@Test Annotation

Die @Test Annotation zeigt an, dass die annotierte Methode eine Testmethode ist. Die Testmethode darf nicht privat oder statisch sein und muss keinen Wert zurückgeben.

Syntax:

Java

 

@DisplayName Annotation

Die @DisplayName Annotation wird verwendet, um einen benutzerdefinierten Namen für die annotierte Testklasse oder -methode anzugeben. Diese benutzerdefinierten Namen können Leerzeichen, Sonderzeichen und sogar Emojis enthalten und werden in der Regel in den von IDEs und Build-Tools generierten Testberichten verwendet.

Syntax:

Java

 

@Disabled Annotation

Die @Disabled Annotation in JUnit 5 wird verwendet, um die Testmethode oder die Testklasse aus dem Testlauf auszuschließen.

Wenn sie auf eine Testklasse angewendet wird, werden automatisch alle Methoden innerhalb der Testklasse als deaktiviert betrachtet. Diese Annotation verfügt über einen optionalen Parameter, der es ermöglicht, den Grund für die Deaktivierung des Tests anzugeben.

Syntax:

Java

 

Wie man automatisierte Testfälle mit JUnit 5 schreibt

Es ist an der Zeit, in den Code einzutauchen und mit JUnit 5 zu arbeiten. Wir werden eine neue Java-Klasse erstellen, BasicTest.

Java

 


Alle grundlegenden Annotationen, die wir besprochen haben, werden im Rahmen der Demonstration behandelt.

Lassen Sie uns Methoden in der BasicTest-Klasse hinzufügen, um die Verwendung der @BeforeAll, @BeforeEach, @AfterAll, @AfterEach, @Test, @DisplayName und @Disabled Annotationen, die in JUnit 5 verfügbar sind, zu demonstrieren.

Java

 

Code Durchgang

Die @DisplayName Annotation über der Testklasse zeigt den Testnamen als „Demo-Testklasse“ in den Ergebnissen an, wenn der Test ausgeführt wird.

Die beforeAllTest() Methode wird vor der Ausführung eines der Tests aufgerufen und gibt den Text „Before All method Called!!“ aus. Als Nächstes wird die beforeEachTest() Methode vor jedem Test ausgeführt und gibt den Text „Before Each Method called!!“ aus.

Es gibt drei Testmethoden in dieser Klasse, nämlich testMethodOne(), testMethodTwo() und disabledTest(). Alle drei Testmethoden haben die @Test Annotation darüber, was bedeutet, dass dies Testmethoden sind.

Die disabledTest() Methode wird nicht ausgeführt, da sie die @Disabled Annotation darüber hat.

Nach der Ausführung jedes Tests wird die afterEachTestMethod() ausgeführt, da sie die @AfterEach Annotation darüber hat.

Schließlich, nachdem alle Tests ausgeführt wurden, wird die afterAllMethod() ausgeführt, da sie die @AfterAll Annotation darüber hat.

Testausführung

Die Tests können ausgeführt werden, indem Sie mit der rechten Maustaste auf die Testklasse klicken und „Ausführen ‚‚“ auswählen(„BasicTest“ in unserem Fall).

Eine andere Möglichkeit besteht darin, auf das grün gefärbte Play-Symbol neben der Deklaration der Testklasse zu klicken, wie im folgenden Screenshot gezeigt:



Der folgende Screenshot aus der IntelliJ IDE zeigt, dass die Tests erfolgreich ausgeführt wurden.

Im obigen Screenshot ist zu sehen, dass der Anzeigename der Testklasse gedruckt wurde, auch der deaktivierte Test ist zu sehen und der Grund für den deaktivierten Test wird in der Konsole gedruckt.

Alle Testmethoden, einschließlich der beforetest und aftertest, wurden erfolgreich ausgeführt, und die entsprechenden Ergebnisse wurden in der Konsole gedruckt.

Zusammenfassung

JUnit 5 ist ein leistungsstarkes Testframework, das von Entwicklern zur Durchführung von Modultests des Codes verwendet wird. Es wird auch von Testautomatisierungsingenieuren verwendet, um Testautomatisierungsskripte zu schreiben und auszuführen. Es verfügt über umfangreiche Funktionen, die es Entwicklern und Testern ermöglichen, die Testskripte zu schreiben und Modultests des Codes durchzuführen.

Es bietet auch mehrere Methoden zur Durchführung von Behauptungen und Überprüfungen, die beim Schreiben automatisierter Tests nützlich sind. Neben dem Schreiben und Ausführen der Testskripte wird auch ein Testbericht bereitgestellt, der verwendet werden kann, um den Stakeholdern die Testausführungsergebnisse vorzuführen und die Testabdeckung zu präsentieren.

Viel Spaß beim Testen!

Source:
https://dzone.com/articles/beginners-guide-to-junit-5