Testing auf der JVM

JUnit 5.5 bringt Timeout-Annotation für bessere Tests

Katharina Degenmann

© Shutterstock / woaiss

Das Team von JUnit hat Version 5.5 des Test-Frameworks vorgestellt. Neben einigen Neuerungen in JUnit Jupiter, JUnit Platform, JUnit Vintage sowie zahlreichen Bugfixes ist auch eine neue @Timeout-Annotation mit an Bord. Wir werfen einen Blick auf die Neuerungen.

JUnit ist ein Framework zum Testen von Java-Programmen und eine Kombination aus JUnit Platform, Junit Jupiter und JUnit Vintage. Nach knapp fünf Monaten Entwicklungszeit hat das JUnit-Team nun die neuste Version des Frameworks, JUnit 5.5, vorgestellt.

Neue Features für JUnit Plattform, JUnit Jupiter and JUnit Vintage

Das wohl interessanteste Addendum zu JUnit 5.5 ist der deklarative Timeout-Support in JUnit Jupiter. Mithilfe von @Timeout kann in einem Test, einer Test-Fabrik, einem Test-Template oder in einer Lifecycle-Methode vermerkt werden, dass er fehlschlagen soll, wenn seine Ausführungszeit eine bestimmte Dauer überschreitet. Die Zeiteinheit für die Dauer ist standardmäßig auf Sekunden eingestellt, kann aber konfiguriert werden. Außerdem gibt es zum einen ein neues InvocationInterceptor extension API, zum anderen ein neues LifecycleMethodExecutionExceptionHandler extension API.

Neben JUnit Jupiter darf sich auch die JUnit-Plattform über neue Features freuen. Beispielweise steht nun eine konfigurierbare Test-Discovery-Implementierungen zur Verfügung, die von verschiedenen Test Engines wiederverwendet werden kann. Ebenfalls neu an Bord sind die Methoden isFinal() und isNotFinal() im ModifierSupport.

Natürlich hat sich auch beim dritten im Bunde, JUnit Vintage, etwas getan. Neu ist hier beispielsweise junit:junit, eine kompilierte Abhängigkeit der junit-vintage-engine, um das Abhängigkeitsmanagement in Maven-POMs zu vereinfachen.

Veränderungen und Verbesserungen

Doch es wurde nicht nur verändert, sondern auch verbessert. Neben einigen Bugfixes in der Plattform und in JUnit Jupiter gibt es zahlreiche Verbesserungen.

Hierzu zählen etwa skriptbasierten Bedingungen (@EnabledIf und @DisabledIf), die verworfen werden können. Beim Erstellen einer MethodSource für eine JUnit 4-Beschreibung wird nun eine Methode, die als public deklariert ist, anderen Methoden mit demselben Namen in derselben Testklasse vorgezogen. Für besseres Testen unterstützen außerdem parametrisierte Tests nun die Konvertierung von einem String in die folgenden java.time types: Duration, Period, MonthDay, ZoneId und ZoneOffset.

Wer die neuen Features gerne selbst testen möchte, kann dazu den User Guide verwenden. Alle weiteren Informationen, Features und Verbesserungen stehen in den Release Notes zum Nachlesen bereit.

Geschrieben von
Katharina Degenmann
Katharina Degenmann
Katharina Degenmann hat Politikwissenschaft und Philosophie studiert. Seit Februar 2018 arbeitet sie als Redakteurin bei der Software & Support Media GmbH und ist nebenbei als freie Journalistin tätig.
Kommentare

Hinterlasse einen Kommentar

2 Kommentare auf "JUnit 5.5 bringt Timeout-Annotation für bessere Tests"

avatar
4000
  Subscribe  
Benachrichtige mich zu:
S. Waldmann
Gast

LebenszyklusMethodikExecutionExceptionHandler: Werden jetzt auch auf Deutsch übersetzte Versionen von JUnit 5 angeboten? 😉