L’idée naturelle pour tester notre Hello Swing est de se dire : Le logiciel de test va lancer l’appli puis regarder si ça s’est affiché. Nous allons essayer de la faire.
Mais si l’on comprend que l’on va afficher et immédiatement après regarder s’il y a quelque chose, cela va foirer : entre une commande d’affichage, et l’affichage lui même, il y a toujours un délai de réaction.
Mais combien de temps ? En général, pas très long. On peut considérer que, si au bout de 1 seconde, rien ne s’est affiché, c’est qu’il y a un problème quelque part.
Voilà pourquoi, après avoir lancé la commande d’affichage, nous allons attendre, nous endormir, 1 petite seconde, et alors seulement regarder si l’affichage a eu lieu.
Voici le code :
public void testApparitionDeLaFenêtre() throws Exception
{ Object oreiller; Frame[] apparues; HelloWorld.main(null); oreiller = new Object(); synchronized (oreiller) { oreiller.wait(1000); } apparues = Frame.getFrames(); Assert.assertEquals(1, apparues.length); apparues[0].dispose(); }
Nous testons simplement qu’au bout de 1 seconde il y a une fenêtre.
Cette forme simple n’oblige à aucune modification du code d’origine.
Mais elle est fragile devant de possibles évolutions : si notre appli est utilisée dans le cadre d’autres applis, par exemple ? (il y aurait alors un nombre indeterminé de fenêtres).
Pour exécuter le test, cliquez ici : launch.jnlp (ouvrez au préalable la console JWS pour voir le résultat).
pour avoir les sources et le reste, cliquez ici.