JUnit

JUnit ist ein Framework zum Testen von Java-Programmen, wobei diese dabei in einzelne Units (zu Deutsch Einheiten) aufgeteilt werden.


Was ist JUnit 5?

Um Tests in Java durchzuführen, gibt es mehrere Test-Frameworks. Das bekannteste Framework ist dabei JUnit.

Dort wird das Programm in einzelnen Units (zu Deutsch Einheiten) getestet. Diese Einheiten können Klassen oder Methoden sein.

JUnit besteht aus der JUnit-Plattform, dem JUnit Jupiter und dem JUnit Vintage.

Die JUnit-Plattform bildet die Grundlage für das Starten des Test-Frameworks in der Java Virtual Machine.

Das Jupiter-Subprojekt enthält ein Test-Programm, um Jupiter-basierte Tests auf der JUnit-Plattform laufen zu lassen.

JUnit Vintage enthält ein Test-Programm für die Durchführung von JUnit-3- und JUnit-4-basierten Tests.

Bevor du JUnit 5 verwenden kannst, musst du es auf der JUnit-Webseite kostenlos herunterladen.

Dann kannst du auch schon mit dem Testen in deiner Lieblings-Programmierumgebung (wie zum Beispiel IntelliJ) starten.

Test-Klassen und -Methoden

Deine Tests schreibst du in eigenen Test-Klassen bzw. in deren Test-Methoden.

Dabei musst du auf ein paar Regeln achten:

  • Die Test-Klassen dürfen nicht abstract sein und dürfen nur einen Konstruktor enthalten.

  • Die Test-Klassen und -Methoden dürfen nicht private sein.

Annotationen

Um innerhalb deiner Testklasse deutlich zu machen, dass es sich um Test-Methoden handelt, verwendest du die Annotation @Test. Diese schreibst du über deine jeweiligen Test-Methoden.

Assertions

Innerhalb deiner Test-Methoden kannst du auf Assertions (zu Deutsch Behauptungen) zurückgreifen. Damit können schon viele Bereiche deines Codes abgedeckt werden, da dort beispielsweise der tatsächliche Output von Methoden mit dem erwarteten Wert verglichen wird.

Es gibt ein paar nützliche Assertions, die du dir merken solltest:

  • assertEquals
  • assertTrue
  • assertFalse
  • assertNull
  • assertNotNull
  • assertSame
  • assertNotSame

assertEquals

Die assertEquals-Methode wird sehr häufig verwendet, da hier der erwartete Wert mit dem tatsächlichen Output einer zu testenden Methode verglichen wird.

Schau dir zum besseren Verständnis folgendes Code-Beispiel an:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Bei der Methode exampleMethod der Klasse ExampleClass soll überprüft werden, ob der Output dieser Methode mit dem Wert value übereinstimmt.

Wenn die Werte übereinstimmen, wird die Assertion zu true ausgewertet und der Test ist bestanden. Bei jedem anderen Ergebnis wird die Assertion jedoch zu false ausgewertet. Der Test gilt dann als fehlgeschlagen.

assertTrue

Bei assertTrue, wird überprüft, ob die übergebene Bedingung zu true ausgewertet wird.

Schau dir auch hier wieder zur Veranschaulichung folgenden Code an:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Die assertTrue-Assertion wird also nur dann zu true ausgewertet, wenn der Output des ersten Methodenaufrufs in diesem Fall kleiner ist als der zweite. Anstelle dieser Bedingung können natürlich auch viele andere verwendet werden. Die Hauptsache ist, dass sie als Ergebnis true liefern sollte und damit bewiesen werden kann, dass die zu testende Methode unter diesen Bedingung korrekt ausgeführt wird.

assertFalse

Wie du dir schon denken kannst, prüft assertFalse, ob die in der Klammer übergebene Bedingung zu false ausgewertet wird. Ist dies der Fall, war der Test erfolgreich.

Schau dir dazu wieder folgendes Code-Beispiel an:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Wenn der erste übergebene Wert nicht größer als der zweite ist, wird die Assertion zu false ausgewertet und der Test wäre damit bestanden.

Hier musst du also einmal genau umgekehrt zu assertTrue denken!

assertNull

Wie der Name schon verrät, soll hier die Assertion überprüfen, ob das Objekt Null ist.

Zur Erinnerung: Ein Objekt ist Null, wenn es nicht explizit initialisiert, also mit einem Wert belegt wurde.

In dem folgenden Code wird bei einem Objekt mithilfe dieser Assertion überprüft, ob es Null ist:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Ist dies der Fall, wird die Assertion zu true ausgewertet und der Test gilt als bestanden.

assertNotNull

Im Gegensatz dazu überprüft die Assertion assertNotNull, ob das übergebene Objekt nicht Null ist:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

assertSame

Manchmal kann es auch hilfreich sein, zu überprüfen, ob zwei Objektreferenzen auf dasselbe Objekt zeigen:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

assertNotSame

Auch hier gilt wieder das Gegenteil zu assertSame. Zeigen beide Objektreferenzen nicht auf dasselbe Objekt, wird die Assertion zu true ausgewertet.

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Tests in IntelliJ IDEA starten

Wenn du zu deiner Klasse eine Testklasse erstellen möchtest, musst du in IntelliJ auf den Namen der Klasse in deinem Code klicken.

Dann verwendest du bei MacOs die Tastenkombination option + Enter. Bei Windows lautet der Befehl Alt + Enter.

Anschließend ploppt ein Dropdown auf, indem du Create Test auswählst.

In dem sich nun öffnenden Fenster wählst du als Testing Library die aktuellste JUnit-Version aus. Momentan ist dies JUnit5.

Jetzt kannst du deine Testklasse noch umbenennen, wenn du das möchtest.

In dem Fenster kannst du mithilfe von Checkboxen auswählen, zu welchen Methoden du eine Test-Methode erstellen möchtest.

Anschließend musst du nur noch auf OK klicken und deine Testklasse ist aufgesetzt!


Beispiel-Testklasse

Lege dir eine Klasse Calculator an. In dieser erstellst du jeweils eine Methode pro Rechenoperation, also addition, subtraction, multiplication und division.

Die Methoden haben dabei alle den Rückgabetyp double und können auf public gesetzt werden.

Diesen Methoden werden jeweils zwei Parameter übergeben: double param1 und double param2.

Innerhalb der Methoden werden die jeweiligen Rechenoperationen an den Parametern ausgeführt und mittles des return-Befehls zurückgegeben.

Deine Klasse sollte also wiefolgt aussehen:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!

Um nun eine Testklasse zu erzeugen, klickst du auf den Klassennamen und erstellst dir wie oben beschrieben eine Testklasse mit dem Namen CalculatorTest. Wähle hierbei jedoch keine deiner Rechenoperations-Methoden aus.

Nachdem die Testklasse erstellt wurde, legst du dir eigene Testmethoden an. Dafür verwendest du immer die Annotation @Test. Darunter folgt dann der Kopf deiner Test-Methode.

Du kannst nun die verschiedenen Assertions mithilfe deiner Methoden aus Calculator ausprobieren.

Hier sind einige Beispiele:

Hier versteckt sich noch mehr!
Besuche die App, um alle Inhalte zu sehen!
No items found.

simpleclub ist am besten in der App.

Mit unserer App hast du immer und überall Zugriff auf: Lernvideos, Erklärungen mit interaktiven Animationen, Übungsaufgaben, Karteikarten, individuelle Lernpläne uvm.

Jetzt simpleclub Azubi holen!

Mit simpleclub Azubi bekommst du Vollzugang zur App: Wir bereiten dich in deiner Ausbildung optimal auf deine Prüfungen in der Berufsschule vor. Von Ausbilder*innen empfohlen.

Jetzt simpleclub Azubi holen