Génie Logiciel Orienté Objets 3e année de Licence TP JUnit

publicité
Génie Logiciel Orienté Objets
3e année de Licence
TP JUnit
Tests unitaires
L’objectifs des tests unitaires est d’assurer un comportement correct sur une partie du code ainsi que son maintient. Les tests se présentes sous la forme d’un ensembles d’assertions à vérifier sur chaque unité (fonction/méthode)
du programme.
Cycle de développement en utilisant des tests unitaires :
1. Ajout d’un test
2. Écriture d’une première version de la fonction qui fait échouer le test
3. Exécution du test
4. Écriture d’une version brouillon de la fonction qui passe le test
5. Exécution du test
6. Raffinement du code de la fonction
7. Exécution du test
JUnit
JUnit est une bibliothèque Java permettant de réaliser et d’exécuter facilement des tests unitaires sur un programme Java. Une classe de test par classe dans le programme est utilisée. Une ou plusieurs méthodes de tests
par méthodes dans la classe doivent être écrites. L’utilisation de la version 3.8 est décrite ici. La version 4 peut
également être utilisée mais nécessite de savoir utiliser les annotations Java.
Les classes de JUnit se trouvent dans le package junit.framework. Chaque classe de test doit étendre la classe
TestCase, les méthodes de tests ne prennent aucun argument et ne retournent aucun résultat. Par convention, on
appelle ExempleTest la classe de test d’une classe Exemple et testExemple la méthode de test d’une méthode
exemple.
Chaque méthode de test se compose d’une ou plusieurs assertions écrites sous la forme :
– void assertEquals(Object expected, Object actual)
– void assertEquals(String message, Object expected, Object actual)
– void assertEquals(long expected, long actual)
– void assertEquals(String message, long expected, long actual)
– void assertEquals(double expected, double actual, double delta)
– void assertEquals(String message, double expected, double actual, double delta)
– void assertTrue(boolean condition)
– void assertTrue(String message, boolean condition)
– void assertFalse(boolean condition)
– void assertFalse(String message, boolean condition)
– void assertNull(Object object)
– void assertNull(String message, Object object)
– void assertNotNull(Object object)
– void assertNotNull(String message, Object object)
– void assertSame(Object expected, Object actual)
– void assertSame(String message, Object expected, Object actual)
– void assertNotSame(Object unexpected, Object actual)
– void assertNotSame(String message, Object unexpected, Object actual)
Des variables statiques de la classe de test peuvent être initialisées avant chaque test par la méthode void
setUp() et nettoyées après chaque test avec void tearDown().
Une classe regroupant plusieurs tests peut être créer pour facilité l’exécution d’une série de tests unitaires. Par
convention, une telle classe est appelée AllTests. Elle doit contenir une méthode public static Test suite() qui
crée une instance de la classe TestSuite et ajoute les classes de tests en utilisant addTestSuite(Class testClass).
L’exécution d’une classe de test en ligne de commande se fait de la façon suivante :
java -cp ./bin :/usr/share/junit/lib/junit.jar junit.textui.TestRunner exemple.AllTests.
En remplaçant textui par swingui, les résultats du tests sont affichées dans une interface graphique.
Exercice
Code initial
On vous demande d’écrire un programme Java qui comporte :
– une classe abstraite Suite ;
– les classes concrètes SuiteArithm (suites arithmétiques), SuiteGeom (suites géométriques).
Classe Suite
Cette classe comporte :
– les attributs premier, le premier terme de la suite (u0 ) et pas, la valeur de la progression entre deux termes
successifs de la suite ;
– un constructeur Suite(int, int) qui initialise les deux attributs premier et pas ;
– les méthodes abstraites :
– int valeurAuRangN(int) qui permet de calculer un , n étant transmis en argument ;
– int sommeAuRangN(int) qui permet de calculer la somme des n premiers termes, n étant transmis en
argument.
Classes SuiteArithm et SuiteGeom
Ces deux classes sont concrètes. Elles ont chacune un constructeur et comportent le corps pour les méthodes
valeurAuRangN et sommeAuRangN.
Téléchargement