Quelques mots sur JUnit version 4


Le canevas logiciel JUnit utilise les annotations Java.

Une classe de tests unitaires utilisant le canevas logiciel JUnit :

  1. importe des classes du paquetage org.junit ;
  2. dispose de méthodes servant à l'initialisation et à la libération des données utilisées par les tests. Dans l'exemple ci-dessous de la classe JUnit_GenreTest, la méthode setUp est la méthode qui initialise l'objet de la classe Genre utilisée dans les tests. La méthode d'initialisation doit être annotée @Before. Dans le même exemple, la méthode tearDown est la méthode qui libère l'objet avec l'affectation à null. La méthode de libération doit être annotée @After ;
  3. dispose de fonctions de tests qui suivent le prototype public void maMethodeDeTest() et doivent être annotées @Test. Chaque fonction de test correspond à un test, le scénario complet du test étant le suivant :
    1. exécution de la méthode annotée @Before,
    2. exécution de la méthode de test annotée @Test, et
    3. exécution de la méthode annotée @After ;
  4. insère des assertions dans les méthodes de test, par exemple en utilisant la méthode Assert.assertEquals, pour vérifier le bon déroulement du scénario de test.
L'exécution d'une fonction de test unitaire avec JUnit consiste donc à exécuter un scénario et à insérer des assertions dans le code du scénario pour vérifier que l'exécution est correcte. Par exemple, dans l'exemple du test testEmprunts de la classe JUnit_GenreTest, l'objet de la classe Genre est créé dans la méthode setUp. Ensuite, la méthode testEmprunts effectue dix emprunts et vérifie avec la méthode statique Assert.assertEquals que le nombre d'emprunts est égal à dix. Enfin, la méthode tearDown libère la variable référençant l'objet de la classe Genre. Voici le code de la classe JUnit_GenreTest.java.
package mediatheque;
import java.io.Serializable;

import org.junit.After;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
 * La classe JUnit_GenreTest cree une instance de la classe Genre
 * et invoque des methodes sur cette instance.
 */
public class JUnit_GenreTest {
    Genre g;
    /**
     * Methode executee avant chaque test.
     * 
     * @throws Exception l'exception levee par le test et attrapee par JUnit.
     */
    @Before
    public void setUp() throws Exception {
        g = new Genre("Roman");
    }
    /**
     * Methode executee apres chaque test.
     * 
     * @throws Exception Exception l'exception levee par le test et attrapee par JUnit.
     */
   @After
    public void tearDown() throws Exception {
        g = null;
    }
    /**
     * testCtr() reunit les tests pour verifier que le constructeur est OK
     */
    @Test
    public void testCtr() {
        Assert.assertEquals(g.getNbEmprunts(), 0);
        Assert.assertEquals(g.getNom(), "Roman");
    }
    /**
     * testEmprunts() reunit les tests pour verifier que l'operation emprunter
     * modifie bien le nombre d'emprunts
     */
    @Test
    public void testEmprunts() {
        // Effectuer 10 emprunts
        for (int i = 0; i < 10; i++) {
            g.emprunter();
        }
        Assert.assertEquals(g.getNbEmprunts(), 10);
    }
    /**
     * testToString() verifie que l'operation toString retourne une chaine de
     * caracteres attendue
     */
    @Test
    public void testToString() {
        Assert.assertEquals("Genre: Roman, nbemprunts:0", g.toString());
    }
}
Pour exécuter le test JUnit_GenreTest, à partir du menu Run, choisissez Run as puis JUnit test. Cette action ouvre une perspective avec une barre verte et des indicateurs montrant que les tests se sont déroulées correctement.

Voici quelques liens sur la documentation de JUnit :

  1. site de référence de JUnit ;
  2. les javadoc des classes JUnit. Vous avez par exemple la liste complète des méthodes (statiques) d'assertion dans la classe org.junit.Assert ;


$Id: junit.html 1541 2016-01-05 08:07:10Z conan $