Test-Driven-Development hat sich mittlerweile in der Java-Welt fest etabliert. Nicht selten wir 50% der Entwicklungszeit mit der Erstellung und Wartung von automatisierten Tests verbracht. Leider werden normale Tests oft nicht in der Fachsprache der Anwendung geschrieben und können nur von Programmieren gelesen werden.
Behavior-Driven Development (BDD) schafft hier Abhilfe indem Tests in Form von ausführbaren Szenarien geschrieben werden. Szenarien können von Fachexperten ohne Programmierkenntnisse gelesen und bewertet werden und bilden dadurch eine automatisch validierte Verhaltensdokumentation der Anwendung.
In klassischen BDD-Tools wie z.B. Cucumber müssen Szenarien allerdings in einfachen Text-Dateien formuliert werden. Zusätzlich müssen Entwickler noch Glue-Code schreiben, um die Szenarien an den eigentlichen Test-Code zu binden. Dies führt zu einem nicht unerheblichen Zusatzaufwand der oft dazu führt, dass BDD wieder aufgegeben wird.
Eine Alternative bieten Tools wie Spock, ScalaTest oder Jnario in denen Szenarien direkt in Code geschrieben werden. Allerdings benötigen diese Tools Groovy, Scala, oder Xtend, was in reinen Java-Projekten dazu führt, dass man den Test-Code in einer anderen Programmiersprache schreiben muss als den Produktiv-Code.
JGiven ist ein neues Open-Source BDD-Framework in dem Szenarien in einer fluent Java-API geschrieben werden. JGiven-Szenarien werden in der gängigen Given-When-Then-Form geschrieben. Durch ein modulares Konzept lassen sich neue Szenarien leicht aus Teilen anderer Szenarien zusammensetzen. Dies beschleunigt die Erstellung von neuen Szenarien und vermeidet Testcode-Duplizierung. Da weder Groovy noch Scala benötigt werden und JGiven kompatibel zu JUnit und TestNG ist, kann JGiven sofort in Java-Projekten eingesetzt werden und leicht in bestehende Test-Infrastrukturen integriert werden. JGiven erzeugt außerdem einen interaktiven HTML5 Report, der es Fachexperten ermöglicht die von Entwicklern geschriebenen Szenarien zu lesen und zu beurteilen.
JGiven wird seit über einem Jahr aktiv in einem großen Java-Projekt eingesetzt. Mitterweile wurden schon über 1400 Szenarien geschrieben. Der Test-Code ist dadurch erheblich lesbarer und wiederverwendbarer geworden und der erzeugte Report stellt einen erheblich Mehrwert für unsere Fachexperten als auch die Entwickler selbst dar.
In dem Vortrag wird der Autor eine Einführung in JGiven geben und anhand einer kurzen Live-Coding-Session zeigen wie schnell und einfach BDD-Szenarien in JGiven geschrieben werden können.
Dr. Jan Schäfer ist Senior-Consultant bei der TNG Technology Consulting GmbH und entwickelt dort seit 4 Jahren Java-Enterprise Anwendungen. Er ist promovierter Informatiker und seit über 15 Jahren in der Java-Welt zu Hause. Vor kurzem entdeckte er seine Leidenschaft für Behavior-Driven Development und veröffentlichte mit JGiven ein neues BDD-Framework für Java.