HavaRunner 1.0: Java-Testframework mit Fokus auf Concurrency

Diana Kupfer

HavaRunner ist Testframework für Java-Projekte, das mit dem Ziel entwickelt wird, schnelle und leicht verständliche Tests schreiben zu können. Vor einigen Tagen wurde die erste Major-Version veröffentlicht – die Entwicklung bis dorthin lässt sich im Changelog nachvollziehen.

Was hat HavaRunner, was TestNG und JUnit nicht haben? „Es führt Tests standardmäßig parallel aus“, bringt der Projektentwickler Lauri Lehmijoki das auf den Punkt, was er als Alleinstellungsmerkmal seines Frameworks betrachtet. Andere Java-Frameworks hingegen behandelten Parallelität als Sonderfall. Darüber hinaus stelle HavaRunner die Struktur des Testcodes eindeutig dar, und zwar dadurch, dass der Entwickler dazu angehalten werde, die Logik in den Konstruktor der Java-Klasse zu schreiben. Dies wiederum ermögliche es, final-Instanzfelder zu verwenden, die sich hinterher nicht mehr verändern lassen. Diese Immutability, die Neal Ford (ThoughtWorks) gern als „Grundbaustein“ funktionaler Programmierung bezeichnet, sei der Schlüssel zu verständlichen Tests, die gleichzeitig für Nebenläufigkeit geeignet sind.

Eine annehmbare Performanz lasse sich zwar auch mit den Maven-Plug-ins Surefire und Failsafe erreichen. Allerdings begünstigen diese eine Konfiguration in der pom.xml und zeigen Thread-Sicherheitsprobleme darüber hinaus erst auf dem Continuous-Integration-Server an. Dort sei es schwieriger zu debuggen, so Lehmijoki.

HavaRunner basiert auf JUnit, dessen Annotationen folglich größtenteils übernommen werden können. Nichtsdestotrotz bezeichnet Lehmijoki es als „unabhängiges Framework“ – eben weil es sich in den oben genannten Punkten von JUnit unterscheidet.

Der Code von HavaRunner steht auf GitHub bereit und unter MIT-Lizenz.

 

Geschrieben von
Diana Kupfer
Diana Kupfer
Diana Kupfer war Redakteurin bei S&S Media für die Zeitschriften Java Magazin, Eclipse Magazin und das Portal JAXenter. 
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.