Neuere mit Java und JavaFX entwickelte UIs können jetzt mit Robot Framework Acceptance Tests unterzogen werden. Und ihr könnt weiterhin euren Python-basierten Test-Stack nutzen. Cool, oder? Lest weiter und erfahrt, wie es funktioniert!
Sami Pesonen
Sami, Senior Consultant at Eficode, has a deep understanding in Devops pipelines, Docker containers, Ansible provisioning, Vagrant virtualization and Jira requirement management. Sami is also an experienced Devops trainer.
Für das Java-Swing-Widget-Set gibt es schon lange eine Robot-Framework-Testbibliothek, für JavaFX fehlte sie jedoch bisher. Da wir selbst Bedarf hatten, haben wir uns im Frühjahr 2017 nach Toolsets für JavaFX umgesehen und TestFX gefunden – ein vielseitiges Unit-Test-Framework für JavaFX.
Wir (Jukka Haavisto, Pasi Saikkonen und ich) begannen mit der Implementierung einer auf TestFX basierenden Wrapper-Bibliothek und führten erste Tests mit Jybot (unter Verwendung von Jython) durch, einer Java-Implementierung von Robot Framework. Anschließend setzten wir diese Bibliothek in einer realen Kundenanwendung ein. Im Rahmen des Projekts nutzten wir auch weitere Python-basierte Testbibliotheken für Web- und API-Tests und erkannten schnell, dass die Abhängigkeit von Jython keine gute Idee ist, da die Unterstützung für Python 2.7 im Jahr 2020 eingestellt wird. Python-basierte Test-Stacks entwickeln sich in Richtung Python 3, das von Jython noch nicht unterstützt wird. Deshalb haben wir die Unterstützung für Remote Library implementiert. Damit kann Robot Framework direkt verwendet werden – sowohl mit Python 2.7.x als auch mit Python 3.x. Wir sind der Meinung, dass dies generell der richtige Weg für Robot-Bibliotheken ist, wenn etwas anderes als Python verwendet wird.
Wir freuen uns sehr und danken Eficode für die Möglichkeit, diese Bibliothek als Open Source bereitzustellen. Sie ist jetzt unter der Apache-2.0-Lizenz auf GitHub verfügbar. Ihr könnt sie kostenlos nutzen. Ladet einfach die JAR-Datei aus dem Release-Bereich herunter, startet sie mit `java -jar JavaFXLibrary-<version>.jar`, und JavaFXLibrary lauscht auf Port 8270 unter 192.168.x.y.
Anschließend kann mit dem Python-basierten Robot Framework eine Testsuite wie die folgende ausgeführt werden:
In diesem Beispiel wird im Suite Setup die Testanwendung TestKeyboardRobot gestartet, die sich im Java-Classpath befindet. Im Test selbst wird auf ein Label mit der ID `keyCombinationLabel` geklickt und die Tastenkombination STRG+UMSCHALT+G gedrückt. Anschließend wird überprüft, ob das Label `keyCombinationLabel` den Wert `Passed` hat. UI-Objekte können anhand von ID, styleClass und Text identifiziert werden. Auch eine Kombination der vorherigen Kriterien und eines Indexes kann verwendet werden, falls mehrere Objekte gefunden werden. Zum Identifizieren von UI-Objekten könnt ihr die Anwendung Scenicview nutzen, die ebenfalls kostenlos heruntergeladen werden kann.
Das JavaFXLibrary-Repository auf GitHub enthält Akzeptanztests für alle bereitgestellten Keywords – zum Zeitpunkt dieses Artikels 169. Probiert sie gern als Demo aus, um zu sehen, was die Bibliothek kann. Wir planen für dieses Jahr Robot-Framework-Meetups in Tampere und Helsinki, Finnland, bei denen wir die Bibliothek persönlich vorstellen werden. Bleibt dran.
Möchtet ihr eure Akzeptanztests auf das nächste Level bringen? Habt ihr eine Oberfläche, UI oder Anwendung, deren Automatisierung schwierig ist? Müssen mehrere Oberflächen gleichzeitig automatisiert werden? Sprecht uns an – wir helfen euch!
- Softwareentwicklung
- DevOps
Subscribe to our newsletter
Related blogs