Quelles sont les options pour construire des tests automatisés pour les interfaces graphiques écrites en Java Swing?
Je voudrais tester certaines interfaces graphiques qui ont été écrites à l'aide de NetBeans Swing GUI Builder , donc quelque chose qui fonctionne sans nécessiter une falsification spéciale du code testé serait idéal.
Récemment, je suis tombé sur FEST qui semblait prometteur, sauf que le développeur a annoncé en 2012 que le développement ne continuerait pas .
AssertJ est un fork de FEST qui fonctionne très bien pour moi. Il est activement maintenu (au moment de la rédaction), prend en charge Java 8, a des assertions pour quelques bibliothèques populaires telles que Guava et Joda Time, et est très bien documenté. Il est également gratuit et ouvert .
J'utilise actuellement FEST . Il fonctionne avec JUnit et prendra également des captures d'écran des tests ayant échoué.
Il a des méthodes de recherche de composants par défaut qui recherchent le nom du composant testé (qui doit être défini manuellement), mais vous pouvez également générer les testeurs pour un composant donné en lui passant le composant.
Vous pouvez essayer d'utiliser Concombre et Swinger pour écrire des tests d'acceptation fonctionnelle en anglais simple pour les applications Swing GUI. Swinger utilise la bibliothèque Jemmy de Netbeans sous le capot pour piloter l'application.
Le concombre vous permet d'écrire des tests comme celui-ci:
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!"
Jetez un oeil à ce démo vidéo Swinger pour le voir en action.
Nous envisageons jemmy pour automatiser certains tests GUI. Cela semble prometteur.
J'utilise Java.awt.Robot
. N'est pas agréable, n'est pas facile mais fonctionne à chaque fois.
Avantages:
Les inconvénients:
Maintenant, si vous avez le budget, je choisirais LoadRunner. Le meilleur de sa catégorie.
(Divulgation: relation avec l'entreprise qui possède LR, mais j'ai travaillé avec LR avant la relation)
Je ne l'ai pas utilisé personnellement, mais SwingUnit semble assez bon. Vous pouvez l'utiliser avec jUnit, et il n'est pas basé sur "l'emplacement des composants" (c'est-à-dire les coordonnées x et y).
La seule chose que vous pourriez avoir à faire avec le générateur d'interface graphique NetBeans est de définir des noms uniques pour vos composants.
Nous utilisons QF-Test et sommes très satisfaits.
ISpec4J est assez simple, non gonflé et extensible. Cela correspond mieux à mes objectifs que FEST.
Vous pouvez utiliser Marathon : "L'environnement de test intégré Marathon, MarathonITE, est un environnement abordable, facile à utiliser et plate-forme Java/Swing ™ Framework d'automatisation des tests GUI. Vous pouvez utiliser l'enregistreur de scripts intégré de MarathonITE pour créer des scripts de test propres et lisibles soit en Python ou Ruby. Des fonctionnalités avancées telles que le refactoring de méthode d'extraction, -datadriven-tests et l'édition de la carte d'objet vous permettent de créer des suites de tests maintenables et résilients. "
Vous pouvez essayer ReTest , qui est un nouvel outil qui implémente une approche innovante des tests de régression fonctionnelle et les combine avec des tests de singe basés sur l'IA. Il est sur le point de devenir open source également ...
Avertissement: je suis l'un des fondateurs de l'entreprise derrière ReTest.
Sikuli: un testeur graphique utilisant des captures d'écran http://sikuli.org/
Pour ceux qui ont un esprit aventureux, il y a gluant https://github.com/robertoaflores/Gooey un outil de test programmatique (très basique et en cours de développement) pour les applications swing.
Je viens de faire quelques analyses rapides. Squish était le plus prometteur. Pas gratuit cependant