116 lines
3.7 KiB
Plaintext
116 lines
3.7 KiB
Plaintext
|
Nous ne sommes jamais sûr de la validité complète d'un programme, seulement on peut utiliser des programmes de tests pour vérifier de la qualité de notre programme / logiciel.
|
||
|
JUnit permet d'avoir plus d'assurance de la qualité de son logiciel.
|
||
|
|
||
|
Au niveau manuel, c'est très fastidieux, pas très drôle, etc. Si on se trompe ou qu'une modification est à effectuer, il faut recommencer la série de test, manuellement c'est pas top.
|
||
|
|
||
|
Avec JUnit on a un moteur de test qui permet d'effectuer un jeu de test, et ceci autant de fois qu'il nous est nécéssaire / utile.
|
||
|
|
||
|
== JUnit ==
|
||
|
|
||
|
Est une API del'ordre graphique, disponible sur [[http://w3.junit.org => domaine public (gratuit)]]
|
||
|
|
||
|
Façons de fonctionner :
|
||
|
* Graphique
|
||
|
* Console / texte
|
||
|
|
||
|
== Moteurs de tests ==
|
||
|
|
||
|
Faire un test revient généralement à faire une comparaisons entre le résultat __voulu__ et le résultat __réel__.
|
||
|
|
||
|
Dans JUnit, si le test échoue, il donne l'erreur et la ligne d'erreur.
|
||
|
|
||
|
=== Moteur de test en mode texte ===
|
||
|
|
||
|
Cf. Polycopié
|
||
|
|
||
|
=== Moteur de test en mode graphique ===
|
||
|
|
||
|
Cf. Polycopié
|
||
|
|
||
|
== Assertions ==
|
||
|
|
||
|
Les assertions permettent de tester des valeurs par rapport à une comparaison, qu'elles soient égales, nulles, identiques, etc., mais aussi faire échouer le test.
|
||
|
|
||
|
== Cas de tests ==
|
||
|
|
||
|
//setup// et //tearDown// sont automatiquement appelés par les moteurs de test. Il faut donc redéfinir les méthodes pour mettre les objets dans les bons état en fonction de ce que nous voulons obtenir.
|
||
|
|
||
|
Il est possible de créer des tests plus élaborés que des tests unitaires "merdiques". Exemple : Cf. Polycopié pour le test sur dépliage de pile.
|
||
|
|
||
|
== écriture d'une suite de tests ==
|
||
|
|
||
|
Une arborescence précise des tests existe. Cf. schéma polycopié.
|
||
|
|
||
|
Un test peut donc contenir une suite de test. Ce qui est très intéressant.
|
||
|
|
||
|
Si vous n'avez pas crée une suite de Test, JUnit prend l'ensemble des méthodes ayant le mot TEST, et va construire une suite de tests.
|
||
|
|
||
|
== Conseils ==
|
||
|
|
||
|
Développé par les partisans d'**eXtreme programming**, donc pas obligé d'attendre à avoir tout fini pour commencer pour tester.
|
||
|
|
||
|
Il peut être intéressant d'ajouter, pour chaque découverte de bug, un test supplémentaire pour vérifier à chaque ajout de fonctionnalités, que le bug ne se réhitère pas.
|
||
|
|
||
|
Il peut être bon de changer de personne pour la batterie de tests, car il n'a pas la même notion des choses que vous, ce qui apporte une plus - value certaine.
|
||
|
|
||
|
== JUnit version 4 ==
|
||
|
|
||
|
Cette version apporte des ajouts concernant les //annotations// qui sont apparues dans les programmes Java avec JRE 1.5.0.
|
||
|
|
||
|
Les principes sont les mêmes sauf qu'on va utiliser des noms différents, et des annotations avec un arobase (@).
|
||
|
|
||
|
Les tests de JUnit ne vont pas regarder le nom de la méthode, mais l'annotation.
|
||
|
|
||
|
On peut passer des paramètres aux annotations, c'est la gestion des exceptions.
|
||
|
|
||
|
Si on a plusieurs BEFORE, ils seront exécutés dans l'ordre où ils apparaissent dans la classe.
|
||
|
|
||
|
|
||
|
|
||
|
== Conclusion ==
|
||
|
|
||
|
Investissement de départ, mais pour une application de longue haleine, c'est un très bon investissement sur le long terme.
|
||
|
|
||
|
Il est très intéressant de l'utiliser AVANT de commencer à programmer.
|
||
|
|
||
|
|
||
|
== Autres ==
|
||
|
|
||
|
En Java, il existe une fonction nommée TRIM qui permet de supprimer les espaces avant et après une chaîne :
|
||
|
<code java>
|
||
|
Class ctl
|
||
|
String trim ( String s)
|
||
|
</code>
|
||
|
|
||
|
Code de test:
|
||
|
<code java>
|
||
|
public class TestTrim
|
||
|
{
|
||
|
@Test
|
||
|
public void chaineVide()
|
||
|
{
|
||
|
assertTrue( Ctl.trim("").length() == 0);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void chaineEspaces()
|
||
|
{
|
||
|
assertEquals( Ctl.trim(" "),"");
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void devant()
|
||
|
{
|
||
|
assertEquals(Ctl.trim(" abc"), "abc");
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
public void milieu()
|
||
|
{
|
||
|
assertEquals(Ctl.trim("abc ok"), "abc ok");
|
||
|
}
|
||
|
}
|
||
|
</code>
|
||
|
|
||
|
|