Logo von Developer

Suche
Abonnieren

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

preisvergleich_weiss

Recherche in 1.508.171 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. 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.

  3. 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.

  4. IntelliJ IDEA 2017.2 hat ein Moduldiagramm für Java 9

    IntelliJ IDEA 2017.2 bringt zahlreiche Hilfsfunktionen

    Die kommende Version der Java-Entwicklungsumgebung von JetBrains soll bis zum Release keine neuen Features mehr bekommen und ist jetzt als Public Preview verfügbar. Neu ist unter anderem eine Ansicht der Module in Java 9.

  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. "Blaue Briefe" von der Landesmedienanstalt NRW

    "Blaue Briefe" von der Landesmedienanstalt NRW

    Auch Letsplay-Kanäle mit wenigen hundert Zuschauern geraten inzwischen ins Visier der Landesmedienanstalten. Von Annäherung zwischen Anbietern und Behörden oder gar der Abschaffung überholter Regelungen kann offenbar keine Rede sein.

  2. Redesign: Google Maps soll übersichtlicher werden

    Redisgn: Google Maps soll übersichtlicher werden

    Eine überarbeitete und personalisierte Kartenansicht soll zusammen mit farblich abgegrenzten Kategorien für Orte für mehr Übersicht im Kartendienst Google Maps und in anderen Google-Apps sorgen

  3. Arecibo-Teleskop vorerst gerettet

    Das Teleskop

    Das legendäre Radioteleskop Puerto Ricos muss nicht schließen, sich aber neue Partner und Financiers suchen. Von der National Science Foundation kommt bald nur noch ein Bruchteil des Budgets.

  4. US-Einzelhändler wollen Teslas Elektro-Lastwagen testen

    US-Einzelhändler wollen Teslas Elektro-Lastwagen ausprobieren

    Unmittelbar nach der Vorstellung hat Tesla erste Interessenten für seinen elektrischen Lastwagen gefunden. Analysten trauen der Firma zu, den Markt umzukrempeln, obwohl bereits viele etablierte Konkurrenten in den Startlöchern stehen.

Anzeige