Logo von Developer

Suche
Abonnieren

Tägliche Top-News bei WhatsApp, Facebook Messenger, Telegram & Insta

preisvergleich_weiss

Recherche in 1.684.756 Produkten

Rainald Menge-Sonnentag

JUnit 5 setzt auf Java 8 und verbessert die Anbindung von Erweiterungen

Java: JUnit 5 setzt auf Java 8 und bietet bessere Erweiterungsmöglichkeiten

Die aktuelle Version des Java-Test-Frameworks besteht aus mehreren Modulen, die in drei Unterprojekte aufgeteilt sind, mit denen sich Tests flexibler handhaben lassen. Außerdem haben die Macher die Anbindung von Erweiterungen grundlegend geändert.

Nach fast zwei Jahren Entwicklungsarbeit ist nun JUnit 5 erschienen. Die Macher haben das Java-Test-Framework von Grund auf neu entwickelt, um Altlasten abzustoßen. Dazu gehört vor allem die problematische Erweiterung von JUnit 4 durch Runner auf der einen und Rules auf der anderen Seite. Außerdem setzt das Framework nun auf Java 8 als zugrunde liegende Plattform. So lassen sich unter anderem Lambdas verwenden

Anzeige

Anders als der Vorgänger ist JUnit 5 nun modular aufgebaut. Es besteht aus den drei Unterprojekten Platform, Jupiter und Vintage. JUnit Platform ist die Grundlage zum Start von Tests und soll die Brücke zu Build-Werkzeugen und Entwicklungsumgebungen bilden. Über das Interface TestEngine bietet sie eine API zum Entwickeln von Tests. Schließlich bietet sie die Möglichkeit, ein Konsolenfenster zu öffnen, um Tests von der Kommandozeile anzustoßen. Es gibt auch JUnit-4-basierte Runner. Das Unterprojekt JUnit Vintage bietet zudem eine TestEngine, die passend zum Namen Tests ermöglicht, die auf JUnit 3 oder 4 basieren.

JUnit Jupiter verbindet das Programmiermodell von JUnit 5 mit dem neuen Erweiterungsmodell. Letzteres ist wohl die spannendste Neuerung und war eine wesentliche Motivation für das Team, das Basissystem neu zu entwickeln: JUnit 4 bietet die beiden konkurrierende Erweiterungsmöglichkeiten Runner und Rules, die unterschiedliche Stärken und Schwächen haben und eben nicht einheitlich und beliebig austauschbar sind.

Stattdessen kennt JUnit 5 eine einheitliche Extension-API. Entwickler können Erweiterungen über @ExtendWith registrieren und dabei mehrere Extensions miteinander verknüpfen:

@ExtendWith({ FooExtension.class, BarExtension.class })
class MyTests {
// ...
}

Neben dieser deklarativen Erweiterung bietet JUnit Jupiter die Option der Registrierung von Erweiterungen über java.util.ServiceLoader, um die passenden Erweiterungen direkt aus dem classpath zu laden. Die Extension-API bietet zudem mit ExecutionCondition eine Möglichkeit, Bedingungen für die Ausführungen von Tests zu definieren. Zudem besitzen Tests einen wohldefinierten Lebenszyklus, der aus den folgenden Schritten besteht:

  1. BeforeAllCallback
  2. BeforeEachCallback
  3. BeforeTestExecutionCallback
  4. AfterTestExecutionCallback
  5. AfterEachCallback
  6. AfterAllCallback

Java 2017

Mehr Informationen zu JUnit 5 sowie zu Java 9, Java EE 8 und aktuellen Entwicklungen im Java-Umfeld gibt es in dem iX-Developer-Sonderheft, das unter anderem im heise Shop erhältlich ist.

IntelliJ IDEA arbeitet bereits seit Version 2016.2 mit JUnit 5 zusammen. JetBrains liefert das Framework als Bestandteil der IDE aus, aber Entwickler können manuell neuere Varianten installieren. Eclipse Oxygen (4.7) hat die Unterstützung noch als Beta-Funktion gekennzeichnet. Bereits beim Release der IDE im Juni kündigten die Entwickler des Werkzeugs aber vollständigen Support an, sobald die fertige Version erscheint. Für Gradle haben die JUnit-Macher ein rudimentäres Plug-in veröffentlicht, und für Maven existiert ein Tool zur Anbindung über Surefire.

Anzeige

Weitere Details lassen sich dem GitHub-Repository sowie der ausführlichen Dokumentation von JUnit 5 entnehmen. Ersteres enthält zudem den Quellcode, Letztere Hinweise zur Migration von älteren JUnit-Versionen. Aufgrund der Umstellung benötigt das Release mindestens Java 8. Entwickler können es aber freilich zum Testen von Anwendungen verwenden, die für ältere JDKs kompiliert sind. (rme)

Kommentieren

Themen:

Anzeige
  1. Java: Spring Framework 5.0 mit JDK-9-Unterstützung freigegeben

    Java: Spring Framework 5.0 erreicht GA-Status

    Die aktuelle Version des Frameworks für professionelle Java-Entwickler wartet mit JDK-9-Kompatibilität auf und stellt darüber hinaus beispielsweise eine reaktive Alternative zum Webentwicklungsmodul spring-webmvc bereit.

  2. Eclipse Oxygen 1.a arbeitet mit Java 9 und JUnit 5 zusammen

    Eclipse Oxygene 1.a arbeitet mit Java 9 und JUnit 5 zusammen

    Im Abstand von nur zwei Wochen erschienen zwei Versionen der quelloffenen Entwicklungsumgebung Eclipse: Oxygen.1 mit kleineren Verbesserungen und Fehlerbereinigungen und Oxygen.1a mit Unterstützung für Java 9 und JUnit 5.

  3. Entwicklungsumgebung: IntelliJ IDEA 2017.1 ist auf Java 9 vorbereitet

    IntelliJ 2017.1 ist auf Java 9 vorbereitet

    Die IDE unterstützt unter anderem das lang erwartete Java-Modulsystem. Außerdem arbeitet IntelliJ IDEA mit dem kommenden JUnit 5 zusammen, und der Debugger bringt Verbesserungen im Umgang mit nebenläufigen Programmen.

  4. Entwicklungsumgebung: IntelliJ IDEA 2017.3 hat Kotlin 1.2 an Bord

    IntelliJ IDEA 2017.3 hat Kotlin 1.2 und einige Hilfen für Java-Entwickler an Bord

    Das aktuelle Release der vor allem auf Java-Entwickler ausgerichteten IDE gibt unter anderem Hinweise auf Nullability-Probleme und reduziert den Overhead des Debuggers. Außerdem gibt es Funktionen für Multi-Plattform-Projekte mit Kotlin 1.2.

  1. (Echte) Unit Tests für Android

    (Echte) Unit Tests für Android

    Unit-Tests sollen die kleinsten Softwarebausteine überprüfen. Sie sind schnell angewandt und liefern ein direktes Feedback. Robolectric hilft bei der Umsetzung unter Android.

  2. Testautomatisierung in Zeiten von Continuous Delivery

    Testautomatisierung in Zeiten von Continuous Delivery

    Durch Continuous Delivery haben sich die Herausforderungen beim automatisierten Softwaretesten in den Bereichen Unit-, Integrations- sowie UI-Tests verändert. Doch selbst spezialisierte Tester sehen sich hier mit großen Schwierigkeiten konfrontiert. Glücklicherweise gibt es zeitgemäße Lösungsansätze für einen reibungslosen Prozess.

  3. Continuous Integration mit TeamCity

    Komponentenauswahl während der Installation unter Windows (Abb. 1)

    Build Server nehmen Entwicklern beim täglichen Kampf mit dem nächsten Software-Build viel manuelle Arbeit ab. Gerade im Bereich der Continuous Integration leisten Tools wie TeamCity gute Arbeit.

  1. MicroSD-Karte mit einem halben Terabyte

    MicroSD-Karte mit einem halben Terabyte

    Der britische Herstelller Integral hat eine MicroSD-Karte mit einer Kapazität von 512 GByte Speicherkapazität angekündigt. Die Karte soll im Februar auf den Markt kommen.

  2. DJI Mavic Air geleakt: 4K-Drohne mit 21 Minuten Flugzeit

    DJI Mavic Air geleakt: 4K-Drohne mit 21 Minuten Flugzeit

    Schon vor der offiziellen Präsentation sind Bilder und Daten der DJI Mavic Air im Netz gelandet. Bei dem neuen Quadrocopter handelt es sich um eine Mischung aus Mavic Pro und der preiswerten Minidrohne Spark.

  3. Indien: Die Entlarvung des Heilsbringers

    Vor dreieinhalb Jahren haben viele Inder Narendra Modi gewählt, weil sie seinen Versprechen "Wohlstand für alle" und "Ende mit der Korruption" glauben wollten - doch mittlerweile ist klar, dass Modi ein Mann der Konzerne und ihrer Helfer ist

  4. Test: Jaguar XF Sportbrake 25d

    Jaguar XF Sportbrake

    Zwei Jahre nach der Limousine ist der Jaguar XF endlich auch als Kombi zu haben. Formal darf der als gelungen gelten, doch Schönheit allein wird ihm in dieser Klasse keinen dauerhaften Erfolg bringen. Wie fährt sich der XF Sportbrake mit dem 240-PS-Diesel? Ein Test sollte das klären

Anzeige