Les tests unitaires avec JUnit et Netbeans

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)
Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn

Les tests unitaires avec JUnit et Netbeans

En programmation informatique, le test unitaire est un procédé permettant de s'assurer du fonctionnement correct d'une partie déterminée d'un logiciel ou d'une portion d'un programme (appelée « unité » ou « module »).

On écrit un test pour confronter une réalisation à sa spécification. Le test définit un critère d’arrêt (état ou sorties à l’issue de l’exécution) et permet de statuer sur le succès ou sur l’échec d’une vérification. Grâce à la spécification, on est en mesure de faire correspondre un état d’entrée donné à un résultat ou à une sortie. Le test permet de vérifier que la relation d’entrée / sortie donnée par la spécification est bel et bien réalisée.

Le test unitaire est exécuté indépendamment du programme en créant un environnement d’exécution spécifique à la portion de code. Cela permet d'éviter de devoir recompiler tout un logiciel pour vérifier la correction d’un bug des fois assez difficile a déclencher “manuellement” ou pour tester des fonctionnalitées profondes dans le logiciel. Imaginez que vous deviez tester tout GIMP à la main, fonction par fonction dans différent user-case. A la place on écrit un test qui s’execute sur la portion de code définie.

JUnit lui est un framework de test unitaire, décliné sur plusieurs languages (NUnit, PHPUnit,…) Il est intégré nativement a Netbeans. Pour cet article je suis en version 7.1 avec JUnit 4.x.

NetBeans

Lancer NetBeans puis cliquez sur File > New project...

Dans l'assistant New Project sélectionnez dans catégories Java et Projects Java Application puis cliquez sur le bouton  Next >.

netbeans-les-tests-unitaires-avec-junit-1

Une fenêtre New Java Application s'ouvre, mettre dans les champs ci-dessous :

  • Project Name : CalculatriceJUnit
  • Create Main Class : Main

Puis cliquez sur le bouton "Finish".

netbeans-les-tests-unitaires-avec-junit-2

Environnement de test

Le projet

Vous devez avoir dans l'onglet "Projects" la disposition ci-dessous :

  • CalculatriceJUnit
  • -- Source Packages
  • ---- calculatricejunit
  • ------Main.java

Dans le fichier Main.java, mettre le code ci-dessous :

package calculatricejunit;
public class Main {
    public static void main(String[] args) {
    }
}

Création de la class "Function.java"

Clic droit sur le package calculatricejunit puis cliquez sur New > Java Class...

Une fenêtre New Java Class s'ouvre, mettre dans les champs ci-dessous :

  • Class Name : Function

Vous devez avoir dans l'onglet "Projects" la disposition ci-dessous :

  • CalculatriceJUnit
  • -- Source Packages
  • ---- calculatricejunit
  • ------Function.java
  • ------Main.java

Dans la classe Function.java mettre le code ci-dessous :

package calculatricejunit;
public class Function {
    
    public Long addition(Long a, Long b) {
        return a+b;
    }    
    
    public Long soustraction(Long a, Long b) {
        return a-b;
    }  
    
    public Long multiplication(Long a, Long b) {
        return a*b;
    }    
    
    public Long division(Long a, Long b) {
        return a/b;
    }  
}

On se limite aux méthodes additionsoustractionmultiplicationdivision. Ceci, afin de bien montrer que le test est indépendant de l’exécution du programme Main.java.En effet, aucun appel des fonctions n’est réalisé, pourtant nous pourrons les tester.

Sélectionnez le fichier Function.java puis cliquez sur Tools > Create JUnit Test, une fenêtre Create Tests s'affiche, cliquez ensuite sur OK.

netbeans-les-tests-unitaires-avec-junit-3

Votre projet doit ressembler au projet ci-dessous :

netbeans-les-tests-unitaires-avec-junit-4

Dans le fichier FunctionTest.java, modifiez les méthodes testAddition, testSoustraction, testMultiplication, testDivision (voir le code ci-dessous) :

    /**
     * Test of addition method, of class Function.
     */
    @Test
    public void testAddition() {
        System.out.println("Test : addition");
        Long a = new Long(4);
        Long b = new Long(6);
        Function instance = new Function();
        Long expResult = new Long(10);
        Long result = instance.addition(a, b);
        assertEquals(expResult, result);
    }
    /**
     * Test of soustraction method, of class Function.
     */
    @Test
    public void testSoustraction() {
        System.out.println("Test : soustraction");
        Long a = new Long(40);
        Long b = new Long(6);
        Function instance = new Function();
        Long expResult = new Long(34);
        Long result = instance.soustraction(a, b);
        assertEquals(expResult, result);
    }
    /**
     * Test of multiplication method, of class Function.
     */
    @Test
    public void testMultiplication() {
        System.out.println("Test : multiplication");
        Long a = new Long(3);
        Long b = new Long(9);
        Function instance = new Function();
        Long expResult = new Long(26);
        Long result = instance.multiplication(a, b);
        assertEquals(expResult, result);
    }
    /**
     * Test of division method, of class Function.
     */
    @Test
    public void testDivision() {
        System.out.println("Test : division");
        Long a = new Long(9);
        Long b = new Long(3);
        Function instance = new Function();
        Long expResult = new Long(3);
        Long result = instance.division(a, b);
        assertEquals(expResult, result);
    }

Dans les méthodes, vous pouvez modifiez les entrés Long a et Long b et la sortie Long expResult par ce que vous voulez, sachant que les entrés et la sortie doivent être cohérentes par rapport à la fonction appelée.

Exécution du test

Pour exécuter le test il suffit de faire un clic droit sur le projet CalculatriceJUnit et choisir Test ou Alt + F6.

Vous obtenez le résultat ci-dessous :

netbeans-les-tests-unitaires-avec-junit-5

Vous pouvez remarquez que sur les 4 tests, 3 sont OK et 1 est KO. Le test testMultiplication n'est pas correct.

C'est normal car 3 x 9 = 27 et non pas 26.

Donc modifions la méthode testMultiplication par :

    /**
     * Test of multiplication method, of class Function.
     */
    @Test
    public void testMultiplication() {
        System.out.println("Test : multiplication");
        Long a = new Long(3);
        Long b = new Long(9);
        Function instance = new Function();
        Long expResult = new Long(27);
        Long result = instance.multiplication(a, b);
        assertEquals(expResult, result);
    }

Puis refaire le test, clic droit sur le projet CalculatriceJUnit et choisir Test ou Alt + F6.

Ce qui donne maintenant tous les tests OK :

netbeans-les-tests-unitaires-avec-junit-6

6. Manuel de référence

JUnit - Manuel de référence : http://kentbeck.github.com/junit/javadoc/latest/

Télécharger le code source du projet

Téléchargement Code source du projet 
Netbeans : Les tests unitaires avec JUnit
Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn