Test d’intégration d’une application Swing avec codjo-release-test

L'objet de cet article est de vous montrer un premier aperçu de codjo-release-test[1] en écrivant un test d'intégration pour une petite application Swing.

1 - Présentation de l'application

L'écran initial devra ressembler à cela :
swing-application-screenshot-before.png

Après un premier appui sur le bouton, vous devrez obtenir l'écran suivant :
swing-application-screenshot-after.png

2 - Développement de l'application[2]

2.1 - Préparation de la structure du projet

L'application est un projet maven composé des modules swing-application-gui et swing-application-release-test.

Pour utiliser codjo, vous devez ajouter les dépôts maven suivants dans le pom parent du projet :

 <repositories>   <repository>     <id>codjo</id>     <url>http://repo.codjo.net/maven2/inhouse</url>   </repository>   <repository>     <id>codjo-external</id>     <url>http://repo.codjo.net/maven2/external</url>   </repository> </repositories> <pluginRepositories>   <pluginRepository>     <id>codjo-plugin</id>     <url>http://repo.codjo.net/maven2/inhouse</url>   </pluginRepository>   <pluginRepository>     <id>codjo-external-plugin</id>     <url>http://repo.codjo.net/maven2/external</url>   </pluginRepository> </pluginRepositories>

 

2.1.1 - Module swing-application-gui

Ce module contiendra le code de l'application. Il peut être écrit comme n'importe quel autre projet maven.

2.1.2 - Module swing-application-release-test

Ce module contiendra le test d'intégration et devra remplir certaines contraintes afin de fonctionner avec codjo-release-test.

Voici la procédure à suivre pour le créer :

2.1.2a - Ajout des dépendances

Ajoutez une dépendance sur le module de l'application, ainsi que sur la librairie codjo-release-test :

 <dependencies>   <dependency>     <groupId>net.codjo.release-test</groupId>     <artifactId>codjo-release-test</artifactId>     <scope>test</scope>   </dependency>   <dependency>     <groupId>codjo-examples</groupId>     <artifactId>swing-application-gui</artifactId>     <version>1.0</version>   </dependency> </dependencies>

 

2.1.2b - Ajout des plugins maven

Ajoutez les plugins maven-config-plugin et maven-test-release-plugin :

 <build>   <plugins>     <plugin>       <groupId>net.codjo.maven.mojo</groupId>       <artifactId>maven-config-plugin</artifactId>     </plugin>     <plugin>       <groupId>net.codjo.maven.mojo</groupId>       <artifactId>maven-test-release-plugin</artifactId>     </plugin>   </plugins> </build>

 

2.1.2c - Configuration de codjo-release-test

Le fichier test-release.cfg contient les informations permettant de lancer et configurer l'application à tester.

La classe principale (main) de l'application étant fr.duminy.examples.codjo.releasetest.swing.SwingApplication, vous devez créer un fichier src/config/test-release.cfg contenant le texte suivant : gui.default.class=fr.duminy.examples.codjo.releasetest.swing.SwingApplication

2.1.2d - Création du répertoire contenant le test d'intégration

Créez le répertoire src/main/usecase. Le contenu de celui-ci peut être librement organisé :

  • Tout fichier dont l'extension est xml et dont le tag racine est release-test sera considéré comme un test d'intégration.
  • Les tests peuvent être organisés en sous-répertoires.

2.2 - Ecriture du test d'intégration

Dans une approche TDD (développement piloté par les tests), vous allez tout d'abord écrire le test.

Créez le fichier MainFrame.xml dans le répertoire src/main/usecase du module swing-application-release-test. Tout fichier de test d'intégration contient au minimum un texte qui ressemble à cela :

 <?xml version="1.0" encoding="ISO-8859-1"?> <release-test name="MainFrame"               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"               xsi:noNamespaceSchemaLocation="http://test-release.xsd"               enabled="true">   <description>Test the main screen</description>   <gui-test>   </gui-test> </release-test>

En l'état actuel, le test ne fait que lancer l'application. Les actions et les vérifications doivent être ajoutées à l'intérieur de la balise gui-test.

Vérifiez tout d'abord que l'écran initial s'affiche bien avec le titre "Swing application" :<assertFrame matching="equals" title="Swing application"/>
La table s'appellera "colorTable". Vérifiez son état de cette manière :

 <assertTable name="colorTable" expected="red" row="0"              column="English" background="255,0,0"/> <assertTable name="colorTable" expected="rouge" row="0"              column="Fran&#231;ais" background="255,0,0"/>

Vérifiez que le bouton (nommé "changeColorButton") est bien activé :<assertEnabled expected="true" name="changeColorButton"/>

Cliquez sur le bouton avec le code <click name="changeColorButton"/>

Pour terminer le test, vous allez vérifier l'état attendu après un clic sur le bouton :

 <assertTable name="colorTable" expected="green" row="0"              column="0" background="0,255,0"/> <assertTable name="colorTable" expected="vert" row="0"              column="1" background="0,255,0"/>

2.3 - Ecriture de l'application

Comme vous l'avez vu précédemment, la table et le bouton sont nommés respectivement "colorTable" et "changeColorButton". Cela se traduit par le code java suivant :

 JTable table = new JTable(model); table.setName("colorTable"); JButton button = new JButton("Change color"); button.setName("changeColorButton");

Le reste du code java sortant du périmètre de cet article, vous pouvez écrire celui-ci à votre convenance.

3 - Lancement du test d'intégration

Ouvrez une ligne de commande et assurez vous d’utiliser java 5 ou java 6 [3] en tapant dans une ligne de commande : java -version

Ensuite, allez dans le répertoire du pom parent du projet et tapez la commande suivante :

 mvn -Dprocess=integration clean install

Le résultat du test d'intégration est affiché de la manière suivante :

 [INFO] Execution des test contenus dans /home/fabien/projets/codjo-examples/codjo-release-test/swing-application/release-test/src/main/usecase [ReleaseTestRunner] Execution des test contenus dans /home/fabien/projets/codjo-examples/codjo-release-test/swing-application/release-test/src/main/usecase [ReleaseTestRunner] 1 tests release trouvés ! [ReleaseTestRunner] . [ReleaseTestRunner] --------------------------------------------------------------- [ReleaseTestRunner] Lancement du test release : /home/fabien/projets/codjo-examples/codjo-release-test/swing-application/release-test/src/main/usecase/MainFrame.xml [ReleaseTestRunner]     Repertoire des donnees du test : /home/fabien/projets/codjo-examples/codjo-release-test/swing-application/release-test/src/main/usecase [ReleaseTestRunner]     Repertoire de lancement : . [ReleaseTestRunner] test: [ReleaseTestRunner] [release-test] Exécution test MainFrame [ReleaseTestRunner] [release-test]     en mode LOCAL_SUFFIX [ReleaseTestRunner] Time: 1,577 [ReleaseTestRunner] OK (1 test)

Vous pouvez constater que codjo-release-test a trouvé le test d'intégration et que celui-ci est passé. Bravo !

4 - Conclusion

Cet article vous a présenté un aperçu rapide de codjo-release-test.
Les prochains articles vous montreront des fonctionnalités plus avancées.

Notes

[1] Le framework codjo, développé en interne chez mon client pendant une quinzaine d'années, est un logiciel libre (sous licence apache) depuis fin 2011.

[2] Le code source complet de cet article est disponible sur GitHub.

[3] Au moment de la rédaction de cet article, codjo n'a pas été testé sur java 7 ou java 8. En testant l'exemple de cet article, j'ai effectivement constaté que codjo-release-test ne fonctionne pas avec ces versions.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.