Archive for Hello Swing

Tester Hello Swing après avoir dormi

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.

Laissez un commentaire

Tester Hello Swing, encore de la philosophie

Nous avons donc décidé de faire un logiciel de test automatique de Hello Swing.

Cependant, nous devrons en afficher quelque part le résultat. Où ?

La première idée est de placer le résultat dans une fenêtre… comme pour Hello Swing. Mais là, nous tournons en rond. Nous voulons prouver que une fenêtre s’affiche, en en affichant une autre… Pour être crédible, il faut que notre test utilise quelque chose de plus simple pour afficher ses résultats, ou au moins une autre technologie.

Un fichier ?… peut être… Malheureusement, la technique utilisée pour Hello Swing, à savoir Java Web Start, ne laisse accès aux fichiers que pour les applications signées, et la nôtre ne l’est pas.

Afficher dans le navigateur web ?… peut être… Par Java Web Start, nous pouvons afficher une page dans le navigateur par défaut.

vue de BarreBisVoici une petite application qui présente la chose : la BarreBis, dont vous trouverez les sources ici. Entrez une URL dans le champ de saisie, et la page appelée s’affichera dans le navigateur par défaut. Et si vous tapez javascript:alert(« Reussi »), une popup contenant le message Reussi pourra éventuellement s’afficher – si le navigateur par défaut est configuré : le mien, Konqueror, affiche le résultat d’une recherche Google !

Afficher dans une console ?…. Il existe bien une console avec Java Web Start. Il faut la faire démarrer manuellement, en lançant la commande javaws -viewer, puis onglet Avancé / Console Java / Afficher la console., À partir de là, tout ce qui est envoyé par System.out est tracé sur cette console.

Comme, de toutes façons, le test nécessite à minima une démarche de surveillance de la part du testeur humain, cette console de Java Web Start me semble être le plus facile, et le programme de test l’utilisera.

Laissez un commentaire

Tester Hello Swing

Voilà, nous avons grâce à cet article une magnifique fenêtre affichant Hello World. Maintenant, il faut vérifier que cela fonctionne.

On dit, quelques fois, qu’il faut construire les tests avant de faire le logiciel. J’aurais dû, peut être. À ma défense, je répondrais que faire le test de Hello World avant l’écriture de ce programme relève de l’impossible : soit on a appris à programmer avec Hello World, et donc on ne peut pas écrire de tests avant, puisqu’on ne sait pas, soit on sait, et forcément on sait que c’est déjà fait, puisque ce programme a été écrit il y a au moins 30 ans !

On peut dire aussi : Pourquoi tester, de toutes façons, ça se voit ? L’idée est ici de faire tourner le logiciel, et de voir s’il fonctionne.

Pour tout le monde, du moment que l’on voit ce que l’on attend, c’est bon. De plus, cela donne une place à l’être humain, et cela lui permet d’avoir d’autres idées. Il pourrait dire, par exemple : L’aspect de votre Hello Worl est vraiment nul, vous pourriez faire un peu de design. Un programme de test automatique ne pourra jamais dire ça.

Mais, d’un autre point de vue, il peut être intéressant de trouver les moyens d’automatiser les tests. Par exemple, si on a Hello World, Hello Mister, Hello Miss… 1.000 comme cela ? Si on trouve le moyen de vérifier automatiquement qu’ils marchent bien, et cela n’empêche nullement d’en regarder certains. Et on ne fait que reculer pour mieux sauter : de toutes façons, il faut bien que quelqu’un regarde le résultat… des tests. Le regard est une attitude fondamentale pour parvenir à la réussite d’un logiciel, à bien des niveaux, dans bien des domaines.

Bon, et comment on fait pour tester ce Hello World ?… On verra dans le prochain billet.

Laissez un commentaire

Hello Swing

Il s’agit de faire Hello World en swing. Swing est le paquetage java pour faire des fenêtres, boutons, etc. Ce n’est pas la chose dansante que tout le monde connait.

Pour commencer les trucs inutiles, cela me semble bien indiqué, puisque ce programme est fait depuis belle lurette.

Voici le fil à couper le beurre que je viens d’inventer :
public class HelloWorld
{
public static void main(String[] args) throws Exception
{
EventQueue.invokeAndWait(new java.lang.Runnable()
{
public void run()
{
JFrame frame;

frame = new JFrame();
frame.add(new JLabel(« Hello World »));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}

(qui me permet de découvrir que WordPress ne rend pas comme je voudrais les balises code)

Et voyez ce que cela donne en cliquant ici.

Merveilleux, non ?… Que peut-on faire comme commentaires là dessus ?…

Laissez un commentaire