Blog

Enkel testning av JavaFX-appar med Python-baserade Robot Framework

MAR 28, 2018

Nyare användargränssnitt som har utvecklats med Java och JavaFX kan nu acceptanstestas med Robot Framework. Och du kan fortfarande behålla din Python-baserade teststack. Coolt, eller hur? Dags att läsa mer om hur!

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.

Det har länge funnits ett Robot Framework-testbibliotek för Java Swing-widgetuppsättningen, men JavaFX har saknats. När vi själva fick behovet började vi undersöka verktyg för JavaFX våren 2017 och hittade TestFX, ett mångsidigt ramverk för enhetstestning av JavaFX.

Vi (jag, Jukka Haavisto och Pasi Saikkonen) började implementera ett wrapper-bibliotek baserat på TestFX och gjorde inledande tester med Jybot (med Jython), som är en Java-implementation av Robot Framework. Vi började använda biblioteket i en verklig kundapplikation. Som en del av projektet använde vi även andra Python-baserade testbibliotek för webbtestning och API-testning, och insåg snart att beroendet av Jython inte var någon bra idé eftersom stödet för Python 2.7 upphör 2020. Python-baserade teststackar går mot Python 3, och Jython stöder ännu inte Python 3. Därför implementerade vi stöd för remote library, vilket gör det möjligt att använda Robot Framework som det är, antingen med Python 2.7.x eller 3.x. Vi tror att detta är rätt väg för Robot-bibliotek generellt när något annat än Python används.

Vi är mycket glada och tacksamma för möjligheten att, med Eficodes stöd, göra detta bibliotek till Open Source. Det finns nu tillgängligt under Apache 2.0-licensen på Github. Du kan använda det fritt. Ladda bara ner Jar-filen från release-området, starta den med `java -jar JavaFXLibrary-<version>.jar` så får du JavaFXLibrary som lyssnar på port 8270 på 192.168.x.y.

JavaFXLibrary blog image

Därefter kan en testsvit av följande typ köras med Python-baserade Robot Framework:

JavaFXLibrary_blog_test_case.png

I det här exemplet startas testapplikationen TestKeyboardRobot, som finns i Java classpath, i svitens setup. I själva testet klickar den på en etikett med id:t `keyCombinationLabel` och trycker tangentkombinationen CTRL+SHIFT+G. Därefter verifierar den att etiketten `keyCombinationLabel` har värdet `Passed`. UI-objekt kan identifieras med id, styleClass och text. Du kan även använda en kombination av dessa samt ett index om flera objekt hittas. För att identifiera UI-objekt kan du använda applikationen Scenicview, som också går att ladda ner kostnadsfritt.

JavaFXLibrary_blog_test_app.png

JavaFXLibrary-repositoryt på Github innehåller acceptanstester (169 när detta skrivs) för alla tillgängliga nyckelord. Testa det gärna som en demo för att se vad det kan göra. Vi planerar att arrangera Robot Framework-träffar i Tampere och Helsingfors i Finland, där vi under året kommer att presentera biblioteket på plats. Håll utkik.

Behöver du ta dina acceptanstester till nästa nivå? Har du ett gränssnitt, UI eller en app som är svår att automatisera? Behöver du automatisera flera gränssnitt samtidigt? Kontakta oss så hjälper vi dig!

  • Mjukvaruutveckling
  • DevOps

Subscribe to our newsletter