© Excellent backgrounds/Shutterstock.com
Testen mit zwei Frameworks

Mr. Spock ruft Geb


Die beiden Frameworks Spock und Geb bilden gemeinsam eine starke Kombination zur Ausführung funktionaler Tests. Aus der Welt von JavaScript dürften den meisten Entwicklern Teile der in Geb verwendeten Syntax schon bekannt vorkommen.

Im ersten Teil dieser zweiteiligen Artikelserie wurde Spock [1] für die Durchführung von Unit sowie Integrationstests betrachtet. In diesem Teil wird auf funktionale Tests von Webapplikationen eingegangen. Da Spock eigenständig nicht in der Lage ist, funktionale Tests durchzuführen, bedarf es der Verwendung weiterer Komponenten. Naheliegend ist hier die Nutzung von Geb [2], da damit Browser zum Testen von Applikationen gesteuert werden können.

Geb fügt sich nahtlos in die Spock-Infrastruktur ein. Dies liegt insbesondere an den ähnlichen Konzepten der beiden Frameworks. Geb nutzt ebenfalls eine DSL (Domain-specific Language), die wiederum auf der Programmiersprache Groovy basiert. Gleichwohl ist Geb unabhängig von Spock und läuft auch hervorragend in Verbindung mit JUnit.

Ähnlich wie Spock ist Geb noch nicht im Stadium der Version 1.0, aber dennoch – aufgrund seiner Stabilität – seit über drei Jahren im produktiven Einsatz in Projekten.

Artikelserie

Teil 1: Grundlagen, Vergleich mit JUnit

Teil 2: Kombination mit Geb und weitere Features

Spock in Kombination mit Geb

Abbildung 1 zeigt die Integrationsarchitektur der beiden Frameworks sowie den Aufrufablauf. Angestoßen wird ein Test zunächst durch ein Build-Werkzeug oder die Entwicklungsumgebung. Ausgangsbasis und ausführendes Testframework ist weiterhin Spock. Über einen Adapter, der im Testcode selbst nicht sichtbar ist, erfolgt die Integration des Geb-Codes. Für den Zugriff und die Steuerung der Browser greift Geb auf WebDriver [3] zurück, das von Google gesponsert wird. Es existieren WebDriver-Implementierungen zur Ansteuerung verschiedener Browser, sodass mit Geb auch so genanntes Cross-Browser-Testing ermöglicht wird.

kraft_1.tif_fmt1.jpgAbb. 1: Architektur

Für die Illustration kommt in diesem Artikel die Homepage des Java Magazins (http://jaxenter.de/java-magazin) zum Einsatz (Abb. 2). Eine erste einfache Testklasse mit dem Aufruf der Startseite sieht wie in Listing 1 aus.

Listing 1

class JavaMagazinHomeSpec extends GebReportingSpec { def "check homepage from the Java Magazin"() { when: go "http://jaxenter.de/java-magazin" then: title == "| JAXenter.de" $("#logo").@alt == "JAXenter.de" } }

Eine Featuremethode kann weiterhin mehrere Blöcke enthalten. Zunächst ist zu sehen, wie im when-Block...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang