TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES...

48
TDD. Herzblut. Zukunft. Java. JUnit 5. Namics. FRANKFURT, 26. APRIL 2016 Stefan Bechtold. Software Craftsman.

Transcript of TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES...

Page 1: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

TDD. Herzblut. Zukunft. Java. JUnit 5. Namics.

FRANKFURT, 26. APRIL 2016

Stefan Bechtold. Software Craftsman.

Page 2: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Agenda.

ERSTENS Namics in a Nutshell. 5 MIN

ZWEITENS JUnit Lambda – wie alles begann 10 MIN

DRITTENS JUnit 5 – Framework 10 MIN

V IERTENS JUnit 5 – Programmiermodell 25 MIN

FÜNFTENS Fragen & Diskussion 10 MIN

Page 3: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics in a nutshell. ERSTENS

Page 4: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

HYBRIS. E-COMMERCE. TECHNICAL ARCHITECTURE.

Frankfurt Technologie E-Commerce

Kompetenzen _  Hybris Certified Core & Commerce Developer _  iSAQB Certified Professional for Software Architecture _  Sun Certified Java Programmer _  Programmiersprachen: Java (SE/EE), C#, C/C++, Objective-C _  Web-Technologien: AJAX, CSS, JavaScript, XSLT

Ausgewählte Open Source Projekte _  JUnit 5 Committer (Core Team) _  Erfinder des JUnit 4 - Hierarchical Context Runner

Ausgewählte Namics Projekte _  Kaufland: Technische Leitung, Konzeption und Implementierung

für SAP Hybris & Adobe AEM, sowie System-Integration in SAP _  BAUHAUS AG: Technische Leitung, Konzeption und

Implementierung für SAP Hybris, u.a. Preisberechnung, Performanceanalysen und -optimierungen Stefan Bechtold.

Software Craftsman.

Print version

Hybris

Page 5: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. NAMICS IN A NUTSHELL

Full Service. Nah dran. Namics. 5

à NAMICS IN A NUTSHELL 500 6

20 C

T K

Page 6: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Full-Service.

Page 7: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Expertise.

Page 8: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Dynamisch.

Page 9: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Begleitung auf Augenhöhe.

Page 10: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Mutig.

Page 11: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Ergebnisqualität.

Page 12: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Kundenzufriedenheit.

Page 13: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

JUnit Lambda - wie alles begann ZWEITENS

Page 14: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 14 JUNIT LAMBDA – WIE ALLES BEGANN

Warum braucht es ein neues JUnit?

-  JUnit 4 wurde im Februar 2006 released

-  Seitdem: -  Sehr viele Veränderungen im Framework -  Das Testing hat sich weiterentwickelt -  Erwartungen an das Testing sind gestiegen

-  Erwartungen werden nicht mehr erfüllt

-  Wartung & Erweiterung sehr zeitintensiv

Page 15: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 15 JUNIT LAMBDA – WIE ALLES BEGANN

JUnit 4 – Pain points

Modulariät !?

-  Packages: Ja, aber nur ein junit.jar Modul

Page 16: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 16 JUNIT LAMBDA – WIE ALLES BEGANN

JUnit 4 – Pain points

JUnit 4 Runner API

-  Sehr mächtiges Konzept

-  Öffnet Tor und Türen für Erweiterungen

-  Aber: Runner sind nicht kombinierbar ! -  Negativ-Beispiel: -  Parameterized -  SpringJUnit4ClassRunner

Page 17: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 17 JUNIT LAMBDA – WIE ALLES BEGANN

JUnit 4 – Pain points

JUnit 4 Rules

-  Neuer Erweiterungsmechanismus seit JUnit 4.7

-  Wrapper um Ausführung auf verschiedenen Ebenen -  eines Tests (@Rule) -  einer Testklasse (@ClassRule)

-  Sehr gute Kombinierbarkeit

-  Aber: Mächtigkeit oft nicht genug, um Ausführung übergreifend zu beeinflussen (z.B. Spring)

Page 18: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 18 JUNIT LAMBDA – WIE ALLES BEGANN

JUnit Lambda – Rise of a new star

Page 19: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 19 JUNIT LAMBDA – WIE ALLES BEGANN

JUnit Lambda

Crowdfunding Kampagne

-  Kern Team -  Marc Philipp (JUnit 4 Committer), Johannes Link -  Matthias Merdes, Sam Brannen, Stefan Bechtold

-  Kampagne lief von Juli bis Oktober 2015

-  Ergebnis: 53.937,- € (von 474 Personen & Firmen)

-  4 Firmen spendierten als Hauptsponsoren zusätzlich jeweils 6 Wochen Entwicklungszeit

Page 20: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 20 JUNIT LAMBDA – WIE ALLES BEGANN

DANKE !

Page 21: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 21 JUNIT LAMBDA – WIE ALLES BEGANN

JUnit Lambda – Kick Off Meeting

Vertreter wichtiger Build Tools, IDEs, Sponsoren, das JUnit 5 Kern Team

Page 22: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 22 JUNIT LAMBDA – WIE ALLES BEGANN

JUnit Lambda – Prototype

-  Ziele: -  Proof of Concept erster Ideen aus dem Kick Off Meeting -  Lauffähiger Prototype als Basis für Feedback -  Feedback aus der Community einholen

-  Beginn: Direkt nach dem Kick Off Meeting

-  Ende: 02. Dezember 2015

Page 23: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 23 JUNIT LAMBDA – WIE ALLES BEGANN

JUnit Lambda – Alpha Release

-  Ziele: -  Feedback aus der Community einbeziehen -  Lessons Learned aus der Prototype Phase -  Größtenteils Neuimplementierung

-  Beginn: Mitte Dezember 2015

-  Ende: 01. Februar 2016

Page 24: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics.

J

Uni

t 5

A

lpha

PoC

2015 07

10

11 12 2016

01 02 03 04 05 06 07 08 09

10 11 12

JUNIT LAMBDA – WIE ALLES BEGANN

JUnit Lambda – Road Map (geplant) 24

Kampagne

Setup & Kick Off

Prototype PoC

Development 5.0.0-ALPHA

5.0.0-M1 5.0.0-M2 5.0.0-M3 Development RC1 RC2 5.0.0

Page 25: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

JUnit Framework

DRITTENS

Page 26: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 26 JUNIT 5 FRAMEWORK

JUnit 5 in a Nutshell

-  Modular

-  Erweiterbar

-  Zeitgemäß

-  Auf- und abwärtskompatibel -  JUnit 5 unterstützt JUnit 3.8 und 4 -  JUnit 5 ist von JUnit 4 ausführbar *

* mit kleineren Einschränkungen

Page 27: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics.

•  Modularer Aufbau

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

•  IDEs und Build Tools verwenden

ausschließlich Launcher und Engine

APIs und können Tests unabhängig vom

benutzten Testing Framework ausführen

Architektur JUNIT 5 FRAMEWORK 27

Page 28: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics.

•  Zentraler Startpunkt für alle Clients (IDEs, Build Tools, etc.)

•  Eindeutige API für das Auffinden und

die Ausführung von Tests aller Engines

•  TestDiscoveryRequest für die Selektion und Filterung

•  Informationen & Feedback über die

TestExecutionListener API

Launcher API JUNIT 5 FRAMEWORK 28

Page 29: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics.

•  Test Engines ermöglichen das Auffinden und Ausführen von Tests eines

bestimmten Programmiermodells

•  Test Engines werden zur Laufzeit mittels

ServiceLoader API ermittelt

•  Stellt ein Testing Framework eine

TestEngine-Implementierung bereit,

kann es über die Launcher API

aufgerufen werden

Engine API JUNIT 5 FRAMEWORK 29

Page 30: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics.

•  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 diese ist

•  Mögliche Werte: Deprecated, Internal,

Experimental, Maintained, Stable

@API(Usage) JUNIT 5 FRAMEWORK 30

Page 31: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics.

•  BeforeAllExtensionPoint

•  BeforeEachExtensionPoint

•  AfterEachExtensionPoint

•  AfterAllExtensionPoint

•  ContainerExecutionCondition

•  TextExecutionCondition

•  InstancePostProcessor

•  MethodParameterResolver

•  ExceptionHandlerExtensionPoint

JUnit 5 - Extensions JUNIT 5 FRAMEWORK 31

Page 32: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 32 JUNIT 5 FRAMEWORK

JUnit 5 - Extensions

Extensions können auf 2 Wege registriert werden

-  Deklarativ: @ExtendWith(Extension) -  Extension definiert ExtensionPoints durch ihren Type

-  Programmatisch: -  ExtensionRegistrar.registerExtensions(registry) -  ExtensionRegistrar wird mittels @ExtendWith registriert

Page 33: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

JUnit Programmiermodell

VIERTENS

Page 34: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 34

JUnit 5 - Programmiermodell

-  Sichtbarkeit -  Annotations und Meta-Annotations -  Nested Test Classes -  Conditional Test Execution -  Custom Display Names -  Tagging -  Assertions und Assumptions -  Dependency Injection für Methoden -  Interface Default Methoden

Page 35: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 35 JUNIT 5 - PROGRAMMIERMODELL

Sichtbarkeit

-  JUnit 5 (er-)kennt Package Private! -  Sowohl Klassen als auch Methoden

-  “public” Keyword muss nicht mehr genutzt werden

-  Beispiel: FirstJUnit5Tests in User Guide

Page 36: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 36 JUNIT 5 - PROGRAMMIERMODELL

Annotations und Meta-Annotations

-  @Test -  @BeforeAll / @AfterAll -  @BeforeEach / @AfterEach

-  @DisplayName -  @Tag / @Tags -  @Disabled

-  @Nested

-  Meta-Annotations -  Erlauben die Bildung von

Custom Tags -  Analog zu Spring -  Später mehr bei Tags

Page 37: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 37 JUNIT 5 - PROGRAMMIERMODELL

Conditional Test Execution

-  Extensions treffen auf das Programmiermodell -  ContainerExecutionCondition -  TestExecutionCondition

-  @Disabled = DisabledCondition -  “Eating our own dog food” ;-)

-  Hinweis: Löst @Ignore vollständig ab!

Page 38: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 38 JUNIT 5 - PROGRAMMIERMODELL

Custom Display Names

-  Standard-Namen unverändert -  Name der Test-Klasse -  Name der Test-Methode

-  Neu: @DisplayName -  Anwendbar auf Klassen und Methoden -  Unterstützt vollen UTF-8 Zeichensatz -  Sonderzeichen und sogar Emoji J

Page 39: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 39 JUNIT 5 - PROGRAMMIERMODELL

Nested Test Classes

-  Ermöglicht Gruppierung von Tests -  logisch und hierarchisch -  vgl. JUnit 4 – HierarchicalContextRunner

-  Initialisierung der äußeren Klasse wird durchlaufen

-  Beispiel: TestingAStack in User Guide

Page 40: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 40 JUNIT 5 - PROGRAMMIERMODELL

Tagging

-  Nützlich zur -  Kategorisierung von Tests -  Gruppierung von Tests -  etc.

-  Frei definierbar auf Basis von -  Klassen: Gültigkeit für alle Tests innerhalb -  Methoden: Gültigkeit für einen Test

Page 41: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 41 JUNIT 5 - PROGRAMMIERMODELL

Assertions

org.junit.gen5.api.Assertions

-  Unterstützt einfache Assertions -  assertTrue(), assertFalse(), assertEquals(), etc. -  assertThrows() / expectThrows() -  assertAll()

-  Supplier<String> für Fehlermeldungen

-  Für aufwändigere Assertions sollte ein Framework zum Einsatz kommen: AssertJ, Hamcrest, etc.

Page 42: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 42 JUNIT 5 - PROGRAMMIERMODELL

Assumptions

org.junit.gen5.api.Assumptions

-  Unterstützt einfache Annahmen zum Test-Abbruch -  assumeTrue(), assumeFalse() -  assumeThat()

-  Supplier<Boolean> zur Verifikation der Annahmen

-  Supplier<String> für Fehlermeldungen

Page 43: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 43 JUNIT 5 - PROGRAMMIERMODELL

Dependency Injection für Methoden

-  Extensions treffen auf das Programmiermodell -  MethodParameterResolver Extension

-  TestInfo: Innerhalb von @Test, @BeforeEach, etc. -  TestInfoParameterResolver -  “Eating our own dog food” ;-)

-  Beispiele: -  TestReporter, MockitoExtension, SpringExtension

Page 44: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 44 JUNIT 5 - PROGRAMMIERMODELL

Interface Default Methoden

-  Ermöglicht die Mehrfachvererbung für Tests

-  Unterstützung für -  @Test -  @BeforeEach -  @AfterEach

-  Erlaubt das Testen von Traits / Querschnittsthemen -  Sortierung, Vergleiche, etc.

-  Beispiel: StringTests in User Guide

Page 45: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Fragen & Diskussion FÜNFTENS

Page 46: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 46 FRAGEN & DISKUSSION

Was ist noch in der Pipeline?

-  Echte Integration in IDEs und Build Tools

-  Dynamische Tests -  (Registrierung via: Lambdas, Streams, Collections, etc.)

-  Parametrisierte Tests

-  Szenario Testing -  Vordefinierte Reihenfolge der Test Methoden

-  Parallelisierung der Testausführung

-  … (more to come)

Page 47: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Namics. 47 FRAGEN & DISKUSSION

Ressourcen / Feedback

-  Homepage: http://junit.org/junit5

-  User Guide: http://junit.org/junit5/docs/current/user-guide/

-  GitHub: https://github.com/junit-team/junit5

-  Samples: https://github.com/junit-team/junit5-samples

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

-  Stack Overflow: http://stackoverflow.com/tags/junit5

Page 48: TDD. Herzblut. Zukunft. Java. JUnit 5. Namics....5.0.0-ALPHA 10 11 12 JUNIT LAMBDA – WIE ALLES BEGANN JUnit Lambda – Road Map (geplant) 24 Kampagne Setup & Kick Off PoC Prototype

Danke. Namics. © N A M I C S A G 2 0 1 6

[email protected]. Software Craftsman.