Page d'accueil Page d'accueil Page d'accueil
   Offre   Société   Produit  Expertise Actualités Recrutement Contactez-nous Plan du site

Expertise

Articles techniques
Testez nos experts
    SGBD
    Technologies
    Intégration Continue
 

Accueil > Expertise > Tester nos experts > Intégration Continue > Travailler avec JUnit

Tests Unitaires

JUnit : framework de tests unitaires sous Java

De manière très générique, réaliser des tests unitaires revient à tester isolément le comportement de chaque méthode public des classes composant un projet informatique. JUnit est un framework offrant toute la panoplie d'outils pour effectuer des tests unitaires en JAVA.

Structure du Framework JUnit.

Utilisation de JUnit.

Composition d'une classe de test.

Lorsque l'on fait des tests unitaires on doit créer une classe de test pour chaque classe. Pour tester une classe sous JUnit il suffit de créer une classe qui hérite de la super classe TestCase. Au niveau des conventions de nommage on procède généralement comme suit. On rajoute toujours le suffixe Test pour chacune des classes que l'on veut tester.

Prenons une classe que l'on nomme MaClasse. La classe de test correspondante aura alors pour nom MaClasseTest.

Voici le code correspondant à l'exemple.
Public class MaClasse{}
public class MaClasseTest extends TestCase {}

Pour que la classe de test soit opérationnelle il faut obligatoirement un constructeur et au minimum une méthode de test.

Le constructeur doit être de la forme suivante :
public MaClasseTest(String name){
super();
}

JUnit exige ce constructeur pour fonctionner. L'utilité du paramètre name, est abordée un peu plus loin.

  • Une méthode de test doit obligatoirement être préfixé par le mot « test »
  • Pour JUnit toutes les méthodes commençant par « test » sont considérées comme des cas de tests.
  • Une méthode de test ne renvoie rien.
Voilà ce que peut donner l'exemple une fois que l'on incorpore ces prérequis:
Public class MaClasse{
public double division(int a, int b);
}
public class MaClasseTest extends TestCase {
public TestMaClasse(String name){
super();
}

public void testDivision(){
...
}
}

Lorsque l'on doit tester plusieurs cas pour la même méthode on doit alors créer plusieurs méthodes de test avec un nommage évocateur.

L'exemple suivant applique cette dernière règle:

public void testParGrandNombreDivision(){
...
}
public void testParZeroDivision() throws NumberException{
...
}

Exécution des tests.

Pour exécuter les tests unitaires JUnit utilise une classe du type TestRunner. C'est une classe qui prend en argument une classe de tests afin d'effectuer tous les tests demandés. JUnit offre trois classes différentes, une affichant le résultat en mode texte, une pour AWT et la dernière pour SWING.

Concrètement, si l'on veut lancer l'exemple en mode SWING il suffit de taper la commande suivante :
java junit.swingui.TestRunner MaClasseTest

Lorsque l'on tape cette commande toutes les méthodes contenues dans MaClasseTest et commençant par test sont exécutées. Cela veut dire que JUnit lance automatiquement tous les tests définis dans une classe.

On peut contourner ce comportement par défaut en ajoutant une suite de tests à notre classe de test. Cela se fait en rajoutant une méthode nommée suite() et renvoyant un objet Test. Dans cette méthode il faut créer une suite de tests en créant une instance de TestSuite. Puis on ajoute tous les cas de tests que l'on veut voir exécuter dans la suite. Si la méthode suite() existe alors JUnit exécutera tous les tests contenus dans la suite. Dans une suite on peut soit ajouter un test précis faisant partie d'une classe soit touts les tests d'une même classe.

Le code suivant complète le contenu l'exemple du cas TestMaClasse avec une suite de tests:
public Test suite(){
SuiteTest suite = new SuiteTest();
// ajoute 1 cas de test de la classe MaClasseTest
suite.addTest(new MaClasseTest(« testParZeroDivision »));
// ajoute tous les cas de test de la classe AutreClasseTest
suite.addTestSuite(AutreClasseTest.class);
return suite;
}

Désormais, il est possible de comprendre l'utilité du paramètre name du constructeur. Celui-ci permet d'indiquer la méthode de test que l'on souhaite voir exécuter par JUnit. Si l'on veut que seul la méthode testParZeroDivision() soit lancée alors on exécutera le code suivant : suite.add(new MaClasseTest(« testParZeroDivision »)); Si l'on veut que tous les tests soient lancés alors on exécutera le code suivant : suite.addSuite(MaClasseTest.class);

.NET

aa

  • le choix de la qualité des services
  • leurs utilisations à distance sans installation
  • le paiement à la demande

Retour en haut de la page Haut de page