Lesbare Tests durch eigene AssertJ-Assertions

03.04.2023

Kurzes Beispiel, wie man eigene AssertJ-Assertions erstellt, um Test-Code leserlicher zu gestalten.

Wir haben eine Klasse namens MemoryAppender. Diese dient dazu, Logging zu testen. Sie enthält die Methoden contains und containsException. (In unserem Fall verwenden wir diese Klasse, um für Schulungen selbstvalidierende Übungsaufgaben mittels JUnit-Tests zu erstellen).

Vorher

Ohne Custom Assertion würden die Asserts z.B. so aussehen:

Das ist ziemlich unübersichtlich:

  • Boilerplate-Code für den Bau der Nachricht wiederholt sich
  • Lokale Variablen sind nötig, um Literale nicht duplizieren zu müssen

Nachher

Mit einer eigenen AssertJ-Assertion könnte man das alles in die Assertion verlagern. Der Test-Code würde dadurch deutlich lesbarer / verständlicher:

Implementierung der eigenen Assertion

Wie man dies konkret umsetzt zeigt folgende selbstdefinierte AssertJ-Assertion:

Fazit

Durch eine eigene AssertJ-Assertion lässt sich unleserlicher Boilerplate-Code aus Tests auslagern. Dadurch können Tests wesentlich verständlicher gestaltet und vom Leser auf einen Blick erfasst werden.
Die Implementierung einer eigenen AssertJ-Assertion ist nicht schwer. Da Code häufiger gelesen und angepasst als geschrieben wird, lohnt sich der geringe initiale Mehraufwand fast immer.

Quellen / Links

 

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*