Besser lesbare Unittests mit AssertJ

von Manuel Mauky | 02 April 2014

Damit Testgetriebene Entwicklung in der Praxis funktionieren kann, müssen sich Tests möglichst einfach und trotzdem ausdrucksstark schreiben lassen und gut lesbar sein. Auch die (Neben-)Aufgabe von Unittests, eine lebendige Entwicklerdokumentation zu bilden, kann nur erfüllt werden, wenn die Tests gut lesbar sind.

Die klassischen Assertions von JUnit lassen hier teilweise zu wünschen übrig. Neben assertTrue und assertNotNull bestehen viele Unittests nur aus unzähligen assertEquals-Anweisungen, was in der Regel sehr weit weg von natürlicher Sprache ist. Diese Lücke versucht das Hamcrest-Projekt zu schließen, welches mittlerweile teilweise in JUnit eingeflossen ist. Hamcrest ist jedoch ebenfalls nicht unproblematisch und bietet durch seinen Aufbau aus statischen Methoden in der Praxis zahlreiche Schwächen und Nachteile.

Einen moderneren Ansatz verfolgt das Framework AssertJ bzw. FEST-Assert. Auf den ersten Blick sehen die Assertions denen von Hamcrest zwar sehr ähnlich, jedoch wurde für die Implementierung statt statischer Methoden der modernere Ansatz einer Fluent-API gewählt, wodurch sich einige Vorteile ergeben, wie z.B. bessere IDE-Integration.

Im Vortrag wird das eigentliche Problem und die bisherige Lösung mit Hamcrest gezeigt. Dem wird anschließend das Framework AssertJ gegenüber gestellt. Anhand von zahlreichen Core-Beispielen soll gezeigt werden, wie einfach sich lesbare Unittests formulieren lassen, wenn man die richtigen Werkzeuge zur Hand hat. Anschließend wird ebenfalls darauf eingegangen, wie mit AssertJ eigene, domänenspezifische Assertions erstellt werden können. Damit kann sich der Anwender seine eigenen Werkzeuge erstellen, um in seiner Domäne gut lesbare und ausdrucksstarke Unittests schreiben zu können.

Datum: 02.04.2014 - 19:00 uhr

Treffpunkt: Saxonia Systems AG, Berliner Str. 63


Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.