25
JUnit 5 - Sneak Preview

JUnit 5 - Sneak Preview · 1/2/2016  · Rules • Neuer Erweiterungsmechanismus seit JUnit 4.7 • Wrapper um Ausführung eines Tests (@Rule) oder einer Testklasse (@ClassRule) •

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

JUnit 5 - Sneak Preview

Warum brauchen wir ein neues JUnit?

Probleme mit JUnit 4

• Wartbarkeit

• Erweiterbarkeit

• Kompatibilität mit Java 5

Bisherige „Architektur“Jeder verwendet das junit.jar.

Runner• Komplette Ausführung kann angepasst werden.

• Aber: Es kann nur einen Runner pro Testklasse geben!

• Runner lassen sich nicht kombinieren

Rules• Neuer Erweiterungsmechanismus seit JUnit 4.7

• Wrapper um Ausführung eines Tests (@Rule) oder einer Testklasse (@ClassRule)

• Gute Kombinierbarkeit einzelner Rules

• Aber: Oft nicht mächtig genug, um auf die Testausführung auf unterschiedlichen Ebenen zu beeinflussen (z.B. Spring)

JUnit Lambda

Vision• Wartbarkeit durch Modularisierung

• Erweiterbarkeit durch einheitliches Extension-Modell

• Erlaube sanfte Migration für JUnit 4 - Nutzer

• Technologie-Upgrade (>= Java 8)

Crowdfunding-Kampagne• Drei Firmen haben von vornherein zugesagt, jeweils

einen ihrer Entwickler für 6 Wochen an JUnit arbeiten zu lassen.

• Weitere Entwickler sollten über eine Crowdfunding-Kampagne finanziert werden.

Danke!

Phase 1: KickoffVertreter wichtiger IDEs und Build Tools, Sponsoren, das Team

Phase 2: Der Prototyp• Ziel: Lauffähige Version als Basis für Feedback aus

der Community

• Entwicklungsbeginn: im Anschluss an Kickoff

• Ende: 02.12.2015

Phase 3: Erste Alpha-Version• Ziel: Lessons Learned sowie Feedback aus der

Prototyp-Phase berücksichtigen

• Zum Großteil Neuimplementierung

• Released am 01.02.2016

Tests schreiben mit JUnit 5

Extension Points• ContainerExecutionCondition

• TestExecutionCondition

• InstancePostProcessor

• ExceptionHandlerExtensionPoint

• MethodParameterResolver

• BeforeEachExtensionPoint

• AfterEachExtensionPoint

• BeforeAllExtensionPoint

• AfterAllExtensionPoint

Eating Our Own Dog Food

Dokumentation• User Guide:

http://junit-team.github.io/junit5/

• Beispiel-Projekte für Gradle und Maven:https://github.com/junit-team/junit5-samples

• Javadoc:https://junit.ci.cloudbees.com/job/JUnit5/javadoc/

Modularisierung

Test Code hängt nur von junit5-api ab.

IDEs und Build Tools verwenden Launcher and Engine APIs und können Tests unabhängig vom benutzten Testing Framework ausführen.

Entkoppelte APIs

@API(Usage)• Alle öffentlichen Klassen sind mit der @API-

Annotation versehen.

• Die Usage gibt an, ob eine Klasse für die Verwendung von außen gedacht ist und, falls ja, wie stabil sie ist.

• Mögliche Werte: Deprecated, Internal, Experimental, Maintained, Stable

Ausblick

Was fehlt noch? (1/2)• Echte Integration in IDEs und Build Tools

• Dynamische Tests (z.B. für parametrisierte Tests, Quickcheck)

• Szenario-Tests (Aufteilung von Tests in Schritte mit Abhängigkeiten untereinander)

Was fehlt noch? (2/2)

• Optionale Parallelisierung der Testausführung

• Globale Extension-Registrierung?

• Erweiterbare Validierungsregeln für Annotationen etc.

Roadmap

• Erstes Milestone-Release: März 2016

• Final/Beta Release: Herbst 2016

Wanted: Feedback!

• GitHub Issues: https://github.com/junit-team/junit5/issues

• Twitter:https://twitter.com/junitteam