Automatisierte Tests für Java Swing-GUIs [geschlossen]


72

Welche Optionen gibt es zum Erstellen automatisierter Tests für in Java Swing geschriebene GUIs?

Ich möchte einige GUIs testen, die mit dem NetBeans Swing GUI Builder geschrieben wurden. Ideal wäre also etwas, das funktioniert, ohne dass der zu testende Code speziell manipuliert werden muss.



Ich empfehle, ReTest ( retest.de/en ) auszuprobieren , das einen interessanten neuen Ansatz für funktionelle Regressionstests in Kombination mit ai-basierten Affentests implementiert.
Roesslerj

Antworten:


33

Kürzlich bin ich auf FEST gestoßen, was vielversprechend schien, außer dass der Entwickler 2012 angekündigt hat, dass die Entwicklung nicht fortgesetzt werden soll .

AssertJ ist eine Gabelung von FEST, die für mich sehr gut funktioniert. Es wird aktiv gewartet (zum Zeitpunkt des Schreibens), unterstützt Java 8, enthält Zusicherungen für einige beliebte Bibliotheken wie Guava und Joda Time und ist sehr gut dokumentiert. Es ist auch kostenlos und offen.


Kann dies verwendet werden, um Java-Anwendungen von Drittanbietern ohne Zugriff auf den Quellcode zu automatisieren? Wenn das so ist, wie?
Stevoisiak

@StevenVascellaro sieht es nicht aus, sowieso +1 für AssertJ Swing
Emecas

Wie identifizieren Sie die Objekteigenschaften? Meine getestete Anwendung ist eine Java Swing-Benutzeroberfläche. Wie erhalte ich die Eigenschaften von Zielfeldern / Schaltflächen, die automatisiert werden sollen?
Manmohan_singh

Sie können Testmate verwenden, um die Java-Swing-Anwendung kostenlos zu automatisieren. Youtu.be/BQQdJ0V23GM
Jaskaran

26

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

Es verfügt über Standardmethoden für die Komponentenjagd, die nach dem Namen der zu testenden Komponente suchen (die manuell festgelegt werden müssen). Sie können die Tester für eine bestimmte Komponente jedoch auch generieren, indem Sie ihr die Komponente übergeben.


Es bewegt sich in GitHub von diesem Beitrag .
Davide Pastore

5
Fest Swing wird nicht mehr entwickelt. Java 7 wird ebenfalls nicht unterstützt. Scheint, als wäre der Swing-Teil des Festes total tot!

Ich benutze FEST mit Swing in Java7 ganz gut. Siehe github.com/bitcoin-solutions/multibit-hd/tree/develop/… für umfassende Testszenarien
Gary Rowe

1
Die Fest-Projektwebsite ist verschwunden ( fest.easytesting.org ). Die Dokumentation im Jahr 2015 fehlt ziemlich. Gibt es noch etwas Vergleichbares, das eine Swing-Benutzeroberfläche antreibt?
Greg Smethells

Wie kann ich als jemand, der mit JUnit nicht vertraut ist, ein Java-Applet mit FEST finden und steuern?
Stevoisiak

14

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

Mit 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!"

Schauen Sie sich diese Swinger-Video-Demo an, um sie in Aktion zu sehen.


9

Wir erwägen jemmy , 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

8

Ich benutze java.awt.Robot. Ist nicht schön, ist nicht einfach, funktioniert aber jedes Mal.

Vorteile:

  • Sie haben die Kontrolle
  • Sehr schnell
  • Bauen Sie Ihre eigene FWK
  • tragbar
  • Keine externen Abhängigkeiten

Nachteile:

  • Keine schöne GUI zum Erstellen eines Tests
  • Sie müssen die GUI während des Tests in Ruhe lassen
  • Bauen Sie Ihre eigene FWK
  • Es ist schwierig, den Testcode zu ändern und den ersten Kabelbaum zu erstellen

Wenn Sie jetzt das Budget haben, würde ich mich für LoadRunner entscheiden. Klassenbester.

(Offenlegung: Beziehung zu dem Unternehmen, dem LR gehört, aber ich habe vor der Beziehung mit LR zusammengearbeitet)


4
Sie sagen "Bauen Sie Ihre eigene FWK". Was ist eine FWK?
Bryan Oakley

2
Aus meiner Erfahrung kann ich sagen, dass AWTs Robotextrem spröde sind. Ein Hauptproblem ist, dass die Low-Level- API mit absoluten Koordinaten arbeitet. Tests können sogar dann ausfallen, wenn sich Ihr zu testendes System (SUT) nicht geändert hat (z. B. wenn es auf einem anderen Betriebssystem ausgeführt wird).
Beatngu13


6

Ich habe es nicht persönlich benutzt, aber SwingUnit sieht ziemlich gut aus. Sie können es mit jUnit verwenden und es basiert nicht auf der "Position der Komponenten" (dh x- und y-Koordinaten).

Mit dem NetBeans GUI Builder müssen Sie möglicherweise nur eindeutige Namen für Ihre Komponenten festlegen.


4

Sie können Marathon verwenden : "MarathonITE Integrated Testing Environment, MarathonITE, ist ein erschwingliches, benutzerfreundliches und plattformübergreifendes Java / Swing ™ GUI-Testautomatisierungsframework. Sie können den integrierten Skriptrekorder von MarathonITE verwenden, um saubere, lesbare Testskripte zu erstellen Mit erweiterten Funktionen wie Refactoring von Extraktmethoden, Erstellen von datengesteuerten Tests und Bearbeiten von Objektkarten können Sie wartbare, ausfallsichere Testsuiten erstellen. "



3

Du könntest es versuchen ReTest , ein neuartiges Tool, das einen innovativen Ansatz für funktionale Regressionstests implementiert und mit ai-basierten Affentests kombiniert. Es wird auch Open Source ...

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




1

Habe gerade ein paar schnelle Scans gemacht. Squish war das vielversprechendste. Nicht kostenlos

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.