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.

pauldoo
quelle
2
verwandte Frage: stackoverflow.com/questions/79891/…
Mike R
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.

Jwest08
quelle
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.

abschrecken
quelle
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.

Dema
quelle
9

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

Jayan
quelle
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)

Javaxpert
quelle
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
7

Wir verwenden QF-Test und sind sehr zufrieden.

ahu
quelle
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.


quelle
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. "

Hashan
quelle
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.

roesslerj
quelle
1

Sie können Sikuli oder Automa zum Testen Ihres GUI-Teils verwenden. Dies sind gut dokumentierte und getestete Tools

Sanjit Kumar Mishra
quelle
1

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

amüsieren
quelle