Table des matières

Les tests unitaires avec JUnit

L'objectif de ce TP est de vous permettre de prendre en main rapidement JUnit pour mettre en place des tests unitaires en Java. Le TP se décompose en 4 parties.

Partie 1. Autoformation

1. Renseignez-vous sur JUnit, et rédigez une présentation de cet outil en une dizaine de lignes dans un petit compte-rendu. Est-ce une librairie ? Un framework ? A quoi cela sert ? Que peut-on faire avec, etc.

2. Suivez le tutoriel disponible à l'adresse suivante. Notez ce que vous retenez d'essentiel dans ce tutoriel dans votre comte-rendu (moins d'une page, copies de code exclues). Notamment, expliquez rapidement ce que sont les annotations en Java et donnez un exemple clair de fonctionnement. https://netbeans.org/kb/docs/java/junit-intro.html

3. Renseignez-vous sur les extensions disponibles pour JUnit et faites un petit résumé du résultat de vos recherchez dans votre compte-rendu.

Partie 2. Exercices simples

1. Comprendre le fonctionnement d'un test.

Soit le code suivant :

SimpleTest.java
import  junit.framework.∗;
public class SimpleTest extends TestCase {
    public SimpleTest(String name) {
        super (name);
    }
 
    public void testSimpleTest () {
        int answer = 2;
        assertEquals((1+1), answer ) ;
    }
}

2. Regrouper les tests.

Soit le code de la classe à tester suivant :

BinString.java
public class BinString {
    public BinString() {}
 
        public String convert(String s) {
            return binarise(sum(s));
        }
 
        public int sum(String s) {
            if (s=="") return 0;
            if (s.length ()==1) return ((int)(s.charAt(0)));
            return ((int)(s.charAt(0))) + sum(s.substring(1));
        }
 
        public String binarise(int x) {
            if (x==0) return "";
            if (x%2==1) return "1" + binarise(x/2);
            return "0"+binarise(x/2);
        }
} 

Soit le code de la classe de test suivant :

BinStringTest.java
import junit.framework.∗;
public class BinStringTest extends TestCase {
   private BinString binString ;
 
    public BinStringTest(String name) {
        super (name);
    }
 
    protected void setUp(){
        binString = new BinString();
    }
 
    public void testSumFunction(){
        int expected = 0;
        assertEquals(expected, binString.sum(""));
        expected = 100;
        assertEquals(expected, binString.sum("d"));
        expected = 265;
        assertEquals(expected, binString.sum("Add"));
    }
 
    public void testBinariseFunction() { 
        String expected = "101";
        assertEquals(expected, binString.binarise(5));
        expected = "11111100";
        assertEquals(expected, binString.binarise(252));
    }
 
    public void testTotalConversion() {
        String expected = "10000001";
        assertEquals(expected, binString.convert("A"));
    }
}   

Partie 3 - Premiers pas en TDD

Dans cette partie, vous devez commencer par écrire les tests, puis écrire le code qui passe les tests. Rapportez tous les éléments de votre démarche, ainsi que les résultats obtenus dans votre compte-rendu.

1. Etant donné une chaîne de caractères, aboutir à une classe de code qui échange les 2 derniers caractères de cette chaîne. Les conditions de test à vérifier sont :

2. Aboutir à une classe de code qui enlève ‘A’ d’une chaîne de caractères s’il est présent dans les 2 premiers caractères de cette chaîne. Si ‘A’ est présent après les 2 premiers caractères, il ne doit pas être enlevé. Les conditions de test à vérifier sont :

Partie 4 - Problème

1. Sélection du sujet.

En fonction du chiffre qui vous aura été attribué, réalisez l'un des deux sujets ci-dessous.

Sujet 1. Ecrire un programme permettant de calculer toutes les racines carrées des nombres compris entre A et B, A et B étant deux nombres entiers tels que A < B.

Sujet 2. Ecrire un programme permettant d'afficher une matrice de taille MxN remplie de nombres aléatoires compris entre A et B. Les valeurs M, N, A et B doivent être passées en paramètre.

2. Travail à faire.

3. Échangez votre travail avec votre voisin.

4. Sur le nouveau code obtenu :

5. Questions bonus.

Références