Functional Testing mit Arquillian Graphene 2.0

Claudia Fröhling

Das Ökosystem rund um das Java-EE-Testing-Framework Arquillian wächst und gedeiht. Ein wichtiger Bestandteil dieses Systems hat jetzt das zweite Major Release erreicht: Graphene stellt ein typensicheres Selenium-API für Arquillian zur Verfügung und ist jetzt in Version 2.0 erschienen.

Selenium wird verwendet, um webbasierte GUIs zu testen. Wie das Selenium-Projekt selbst steht auch die Entwicklung von Graphene vor allem unter dem Eindruck des WebDriver API, einer Spezifikation des W3C. Das API soll es Programmen ermöglichen, den Web-Browser zu prüfen und sein Verhalten zu kontrollieren. Graphene 2.0 baut nun komplett auf WebDriver auf. Das Original WebDriver Java API wird dabei weiterhin komplett unterstützt.

Daneben soll sich in Graphene 2.0 auch das Testen von AJAX-Anwendungen verbessert haben. Ein weiterer wichtiger Punkt ist Dependency Injection: Objekte wie WebDriver context oder FindBy-Elemente können in Arquillian-Testfälle, Page Objects und Page Fragments, sowie WebElement-Wrapper umgewandelt werden. Mehr Informationen finden sich im Blog.

Graphene und Drone

Eng verbunden mit Graphene ist das Schwesterprojekt Arquillian Drone. Es integriert Selenium, so dass die von Selenium bereitgestellten Java-APIs in Arquillian-Tests verwendet werden können. Tests können in einem gemischten Modus sowohl client- als auch serverseitig ausgeführt werden. Wie Graphene und Drone beim funktionalen Testen kombiniert werden können, beschreibt der Guide auf der Projektseite.

Alles unter dem Arquillian-Schirm

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.

Geschrieben von
Claudia Fröhling
Claudia Fröhling
Claudia Fröhling hat in verschiedenen Redaktionen als TV- und Onlineredakteurin gearbeitet, bevor sie 2008 zur Software & Support Media GmbH kam und sich bis 2014 um alle Projekte des Verlages im Ressort Java kümmerte. Claudia hat einen Abschluss in Politikwissenschaften und Multimedia Producing. Ihr Google+ Profil findest du hier.
Kommentare

Schreibe einen Kommentar

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