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

  2. Die Android Testing Support Library erreicht Version 1.0

    Die Android Testing Support Library erreicht Version 1.0

    Das Framework fasst einige Android-Test-APIs zusammen, darunter Espresso für UI-Tests und Android JUnit Runner zur Anbindung an JUnit zum Durchführen von Unit-Tests. Das gebündelte Release bringt Updates für alle APIs mit sich.

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

  4. Kotlin-Plug-in für NetBeans erschienen

    Kotlin kommt für NetBeans

    JetBrains' Kotlin-Team hat das erste Plug-in für den IntelliJ-IDEA-Konkurrenten herausgegeben. Entwickler können auch mit Java gemischten Quellcode bearbeiten, bauen und debuggen.

  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. Gastbeitrag: EU erschwert Telefonanbieterwechsel – für immer Telekom?

    Gastanalyse: EU erschwert Telefonanbieterwechsel – Für immer Telekom?

    Das deutsche Erfolgsrezept zum einfachen Wechsel von Telefon- und Internetanbietern hängt am seidenen Faden. Die EU will europaweite Regeln. Eine gute Idee – aber nicht auf Kosten deutscher Standards, fordert Verbraucherschützerin Lina Ehrig.

  2. Instagram wirbt auf Facebook mit Vergewaltigungsdrohung

    Instagram wirbt auf Facebook mit Vergewaltigungsdrohung

    Eine Journalistin erhielt per E-Mail eine Vergewaltigungsdrohung, die sie bei Instagram als Screenshot veröffentlichte. Nun machte die Plattform daraus eine Werbeanzeige auf Facebook.

  3. IndexedDB: Mozilla will Datenschutz-Leck in Firefox schnellstens stopfen

    IndexDB: Mozilla will Datenschutz-Leck schnellstens stopfen

    Bereits nächste Woche könnte Firefox sein acht Jahre altes Problem mit IndexedDB loswerden. Mozilla will die Datenschutzlücke sobald wie möglich schließen.

  4. Abarth 595 im Generationen-Vergleich: Der Kleine und das Biest

    Für die Vorstellung des neuesten 500-Sondermodells hat Fiat ganz nebenbei auch zu einer Probefahrt im ersten Abarth 595 geladen. Dabei wird einmal mehr deutlich, wie sehr sich Ansprüche verschiedenster Art verändert haben. Spaß machen auf ihre Art beide, wenn auch höchst unterschiedlich.

Anzeige