Die erst im September 2017 mit Version 5 erschienene Generalüberholung der Testbibliothek JUnit hat am 18. Februar 2018 ein neues Minor-Release erhalten. Die neue Version 5.1.0 bietet eine ganze Reihe von Verbesserungen, Bugfixes und neuen Features.
Hervorzuheben sind die folgenden Punkte, die in die neue Version eingeflossen sind:
- Testerkennung unter Java 9
- Tests können alternativ zum Klassenpfad-Scanning auch über ein Scannen von Java 9 Modulen gefunden werden. Testmodule können auch direkt über einen Kommandozeilenparameter für den Konsolen-Launcher angegeben werden.
- Verbesserung der Kotlin-Unterstützung
- Kotlin-freundlichere Assertions, die Unterstützung von Kotlins Reified Generics und die Möglichkeit, explizite Typparameter weglassen zu können, machen die Verwendung von JUnit mit Kotlin einfacher.
- Einführung einer Tag Expression Language zum Filtern von Tests für die Ausführung
- Mithilfe der Expression Language kann man Filterregeln für Tests definieren, die mit bestimmten Tags annotiert sind. Lässt man seine Tests dann mit dem Konsolen-Launcher, Maven Surefire oder Gradle laufen, werden nur diese Tests ausgeführt. Z. B. führt der Ausdruck
(micro | integration) & (foo | baz)
nur die micro und integration Tests für foo oder baz aus.
- Mithilfe der Expression Language kann man Filterregeln für Tests definieren, die mit bestimmten Tags annotiert sind. Lässt man seine Tests dann mit dem Konsolen-Launcher, Maven Surefire oder Gradle laufen, werden nur diese Tests ausgeführt. Z. B. führt der Ausdruck
- Verbesserung der bedingten Testausführung
- Neue Annotationen mit dem Namensmuster
@Enabled*
und@Disabled*
erlauben eine feinere deklarative Teststeuerung. Zum Beispiel lassen sich Tests mit@EnabledOnOs
oder@DisabledOnJre
für bestimmte Betriebssysteme oder Java-Versionen aktivieren oder deaktivieren. Mit den Annotationen@EnabledIf
und@DisabledIf
können nun auch Skripte einer dynamischen Skriptsprache (z. B. JavaScript oder Groovy) ausgeführt werden, um zu bestimmen, ob ein Test ausgeführt werden soll oder nicht.
- Neue Annotationen mit dem Namensmuster
- Verbesserungen für das Schreiben parametrisierter Tests
- Programmatische Registrierung von Extensions
- Felder einer Klasse, die eine Extension halten, können mit der neuen Annotation
@RegisterExtension
programmatisch registriert werden.
- Felder einer Klasse, die eine Extension halten, können mit der neuen Annotation
- Verbesserungen beim Extension Kontext
- JUnit Erweiterungen (Extensions) können nun auf die Konfigurationswerte der JUnit Plattform und auf den Lebenszyklus der aktuellen Testinstanz zugreifen. Schließbare Ressourcen für den Extension-
Store
werden unterstützt (ClosableResource
) und neue Hilfsmethoden helfen dabei, den Extension-Code schlank zu halten.
- JUnit Erweiterungen (Extensions) können nun auf die Konfigurationswerte der JUnit Plattform und auf den Lebenszyklus der aktuellen Testinstanz zugreifen. Schließbare Ressourcen für den Extension-
- Verbesserungen bei der Unterstützung von alten (Vintage) JUnit 4 Tests
- Die
VintageTestEngine
unterstützt ebenfalls den neuenModuleSelector
zum Scannen von Java 9 Modulen. Deaktivierte Tests werden nun korrekt gehandhabt, um z. B. von Gradle richtig verarbeitet zu werden.
- Die
Die vollständige Liste der Verbesserungen kann man in den Release Notes nachlesen.

