2008-09-18 14 views
60

Welche Optionen gibt es, um automatisierte Tests für in Java Swing geschriebene GUIs zu erstellen?Automatisierte Tests für Java Swing-GUIs

Ich würde gerne einige GUIs, die mit der NetBeans Swing GUI Builder geschrieben wurden, so etwas, das funktioniert, ohne spezielle Manipulation der Code im Test wäre ideal wäre zu testen.

+2

Verwandte Frage: http://StackOverflow.com/Questions/79891/what-is-the-best-testing-tool-for-swing-based-applications –

+0

Ich empfehle, ReTest (https: //www.retest .de/de /), die einen interessanten neuen Ansatz für funktionale Regressionstests kombiniert mit ai-basierten Affentests implementiert. – roesslerj

Antwort

28

Kürzlich stieß ich auf FEST, die vielversprechend schien, außer dass der Entwickler announced in 2012 that development would not continue.

AssertJ ist eine Gabel von FEST, die sehr gut für mich arbeitet. Es wird aktiv gepflegt (zum Zeitpunkt des Schreibens), unterstützt Java 8, hat Behauptungen für einige populäre Bibliotheken wie Guava und Joda Time und ist sehr gut dokumentiert. Es ist auch kostenlos und offen.

+0

Kann man damit Java-Anwendungen von Drittanbietern ohne Zugriff auf den Quellcode automatisieren? Wenn das so ist, wie? –

+0

@StevenVascellaro sieht aus, kann es nicht, +1 für AssertJ Swing – emecas

6

Ich habe es nicht persönlich verwendet, aber SwingUnit sieht ziemlich gut aus. Sie können es mit jUnit verwenden, und es basiert nicht auf "Ort der Komponenten" (d. H. X- und Y-Koordinaten).

Das einzige, was Sie möglicherweise mit dem NetBeans GUI Builder tun müssen, sind eindeutige Namen für Ihre Komponenten.

25

Ich verwende derzeit FEST. Es funktioniert mit JUnit und macht auch Screenshots von fehlgeschlagenen Tests.

Es verfügt über standardmäßige Methoden zum Suchen von Komponenten, die nach dem Namen der zu testenden Komponente suchen (die manuell festgelegt werden müssen). Sie können jedoch auch die Tester für eine bestimmte Komponente generieren, indem Sie die Komponente übergeben.

+0

Es bewegt sich in GitHub von [diesem Beitrag] (http://fest.easytesting.org/archives/167). –

+5

Fest Swing wird nicht mehr entwickelt. Es unterstützt auch Java 7 nicht. Scheint so, als ob der Schwungteil des Festes tot ist! –

+0

Ich benutze FEST mit Swing in Java7 ganz gut. Ausführliche Testszenarien finden Sie unter https://github.com/bitcoin-solutions/multibit-hd/tree/develop/mbhd-swing/src/test/java/org/multibit/hd/ui/fest –

6

Wir verwenden QF-Test und sind sehr zufrieden.

8

Ich verwende java.awt.Robot. Ist nicht nett, ist nicht einfach, aber funktioniert jedes Mal.

Vorteile:

  • Sie sind in der Steuerung
  • Sehr schnelle
  • Bauen Sie Ihre eigene FWK
  • Tragbare
  • Keine externen Abhängigkeiten

Nachteile:

  • Keine schöne GUI Test
  • Sie zu bauen haben die GUI in Ruhe lassen, während Sie
  • bauen Sie Ihre eigenen FWK testen
  • Schwierige Testcode zu ändern und Ihre erste Gurtzeug

Jetzt erstellen Wenn Sie das Budget haben, würde ich für LoadRunner gehen. Klassenbester.

(Disclosure: Beziehung zu dem Unternehmen, das LR besitzt, aber ich arbeitete mit LR vor der Beziehung)

+4

Sie sagen "bauen Sie Ihre eigene FWK". Was ist ein FWK? –

+3

Framework, meine Vermutung. –

+1

Aus meiner Erfahrung kann ich sagen, dass AWTs "Roboter" extrem spröde ist. Ein großes Problem ist, dass seine Low-Level [API] (https://docs.oracle.com/javase/8/docs/api/java/awt/Robot.html) mit absoluten Koordinaten arbeitet. Tests können unterbrochen werden, selbst wenn sich das zu testende System (SUT) nicht geändert hat (z. B. wenn es auf einem anderen Betriebssystem ausgeführt wird). – beatngu13

14

Sie können versuchen, für Swing-GUI-Anwendungen Cucumber und Swinger für das Schreiben von funktionalen Abnahmetests in einfachem Englisch zu verwenden. Swinger verwendet Netbeans 'Jemmy-Bibliothek unter der Haube, um die App zu steuern.

Gurke können Sie Tests wie folgt schreiben:

Scenario: Dialog manipulation 
    Given the frame "SwingSet" is visible 
     And the frame "SwingSet" is the container 
    When I click the menu "File/About" 
    Then I should see the dialog "About Swing!" 
    Given the dialog "About Swing!" is the container 
    When I click the button "OK" 
    Then I should not see the dialog "About Swing!" 

Werfen Sie einen Blick auf diese Swinger video demo es in Aktion zu sehen.

8

Wir erwägen jemmy, um einige der GUI-Tests zu automatisieren. Sieht vielversprechend aus.

+2

Jemmy ist ein sehr solides Framework und wir verwenden es seit mehr als 5 Jahren sehr erfolgreich. – Mot

6

UISpec4J ist ziemlich einfach, unbloated und erweiterbar. Es passt besser zu meinen Zwecken als zu FEST.

3

Sikuli: ein GUI-Tester Screenshots mit http://sikuli.org/

+1

Beachten Sie, dass es http: //www.sikulix ist.com/heutzutage (immer noch Open Source) – tobi42

3

Sie Marathon verwenden können: „Marathon Integrated Testing Environment, MarathonITE, ist eine kostengünstige, einfach zu bedienende und plattformübergreifende Java/Swing ™ GUI Testautomatisierungs-Framework Sie können den integrierten Marathonite-Skriptrekorder verwenden, um saubere, lesbare Testskripte entweder in Python oder Ruby zu erstellen.Mit erweiterten Funktionen wie Extraction-Methode-Refactoring, Erstellen von Datadriven-Tests und Objektkartenbearbeitung können Sie wartbare, belastbare Tests erstellen Suiten. "

1

Nur ein paar schnelle Scans. squisch war das vielversprechendste. Nicht kostenlos aber

2

Für diejenigen mit einem abenteuerlichen Geist, gibt es klebrige https://github.com/robertoaflores/Gooey eine (sehr grundlegende und unter Entwicklung) Programmatic Test-Tool für Swing-Anwendungen.

1

Sie können Benutzer sikuli oder Automa für Ihre GUI Teil testen, werden diese gut dokumentiert und getestet Tools

3

Sie könnten ReTest versuchen, die ein neues Werkzeug, das einen innovativen Ansatz zur funktionalen Regressionstests implementiert und kombiniert sie mit ai-basierter Affentest. Es ist im Begriff, Open Source auch zu werden ...

Disclaimer: Ich bin einer der Gründer des Unternehmens hinter ReTest.