Quantensprung für Java-Enterprise-Testing: JBoss gibt Test-Plattform Arquillian 1.0 frei

Hartmut Schlosser

Das Projekt, das das Testen von Java-Enterprise-Anwendungen auf eine neue Stufe heben könnte, hat sein erstes Major-Release erreicht: Arquillian 1.0.0 ist da.

Das JBoss-Projekt Arquillian ist die Reaktion auf die im Java-EE-Standard nicht explizit vorhandene Unterstützung für Testentwickler. Hohe Zusatzaufwände mussten hier in Kauf genommen werden, da Anwendung beispielsweise in Integrationstests wiederholt zusammengebaut werden müssen. Außerdem ist das Ansteuern des Applikationservers aus dem Test heraus nicht ohne Weiteres möglich. Wünschenswert wäre, dass Änderungen an Test- und Produktivcode keine Rebuilds, etwa via Ant oder Maven erforderten und Integrationstests direkt in der IDE ausgeführt werden können.

Dieser Technologie-Lücke nimmt sich Arquillian nun an. Die Besonderheit des Projektes liegt darin, dass die Testausführung auf die Ziel-Runtime verlegt wird und der Entwickler die Laufzeitumgebung nicht innerhalb der Tests oder Projekt-Builds verwalten muss. Arquillian legt zu diesem Zweck einen kompletten Lifecycle um die Test-Ausführung, der die Container-Verwaltung übernimmt. Testfall und alle abhängigen Ressourcen werden als sogenannte ShrinkWrap-Archive gebundled. Die Archive werden in den Containern deployed, und die Tests in den bzw. gegen die Container ausgeführt. Zur Verfügung stehen zudem Dependency Injection und andere deklarative Services.

In der vorliegenden Major-Version unterstützt Arquillian über 10 Web Container, darunter JBoss AS, GlassFish und Tomcat. Der Container-Support erlaubt die Integration in zahlreiche Plattformen wie Java EE 5/6, Servlets, OSGi, Embedded EJB, Standalone CDI und verschiedene Cloud-Umgebungen.

Zu den neuesten Features gehört, dass sich Deployments in einem Test über verschiedene Container hinweg koordinieren lassen. Multiple Protokoll-Kontexte innerhalb eines Deployments sind möglich. Deployment Exceptions lassen sich deklarieren. Ein neues Konfigurationsschema ermöglicht mehrere Konfigurationen pro Container.

Auch das Ökosystem an Erweiterungen für Arquillian wächst weiter. Die Komponente Arquillian Drone wird mit Arquillian 1.0 ausgeliefert. Drone ermöglicht es, eine Abstraktionsschicht über Browser-Controller wie Selenium oder WebDriver zu legen, um Browser-basierte Tests mit minimalem Setup-Aufwand zu schreiben.

Weitere Komponenten sind noch im Aufbau, darunter ein Android Test Controller, eine DBUnit Integration, ein Test-Plug-in für Seam 2, BDD Runners (Spock und JBehave), Performance-Metriken, die Code Coverage Library Jacoco und Arquillian Graphene, ein typensicheres Selenium API.

Arquillian 1.0 sowie alle Erweiterungen sind über die Maven Central oder die JBoss Community Repositories zugänglich. Benötigt wird Java ab Version 1.5, die Einbindung in gängige Testframeworks wie JUnit und TestNG ist gegeben. Ein User-Guide beschreibt ausführlich das Aufsetzen der ersten Tests mit Arquillian – auch in deutsch. Eine exzellente Einführung von Arquillian-Entwickler Dan Allan gibt es auf JAXenter.com zu lesen. Empfehlenswert ist zudem immer noch der Artikel „Leichtgewichtiges Testen von Java EE“ von Michael Schütz und Alphonse Bendt.

JBoss bringt mit Arquillian 1.0 eine vielversprechende Technologie in das Java-Ökosystem ein. Der Zielvorgabe, das Schreiben von Integrations- und funktionalen Tests so einfach wie das von Unittests zu machen, ist man einen Schritt näher gekommen. Das florierende Ökosystem sorgt für die Vernetzung mit bestehenden Test-Standards. Man sollte also keine Angst haben vor dem kleinen Alien vom Planeten Arquillia – Ike kommt in Frieden!

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

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