Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
ens:dasi2014-2015:dasi:tptestsunitaires [2015/01/13 07:31]
admin Cordier Amelie () [Partie 1. Autoformation]
ens:dasi2014-2015:dasi:tptestsunitaires [2015/01/13 07:39] (Version actuelle)
admin Cordier Amelie () [Partie 4 - Problème]
Ligne 1: Ligne 1:
 ====== Les tests unitaires avec JUnit ====== ====== 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 3 parties. Un compte-rendu est à remettre à la fin du TP. Des consignes quant aux informations à faire figurer dans le compte-rendu sont données au fil du texte. Le travail en binôme est autorisé. +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 3 parties. Un compte-rendu est à remettre à la fin du TP. Le travail en binôme est autorisé. 
  
  
-===== Partie 2. Exercices simples ===== +===== Partie =====
- +
-1. Comprendre le fonctionnement d'un test.  +
- +
-Soit le code suivant :  +
- +
-<code java 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 ) ; +
-    } +
-+
-</code> +
- +
-  * Créez une classe ''%%SimpleTest.java%%'' contenant le code ci-dessus. +
-  * Adaptez cette classe pour la rendre conforme à JUnit 4.  +
-  * Exécutez le test.  +
-  * Changez la valeur de la variable ''%%answer%%'' et relancez le test.  +
-  * Dans votre compte-rendu, expliquez ce qui se passe. +
- +
-2. Regrouper les tests. +
  
 Soit le code de la classe à tester suivant :  Soit le code de la classe à tester suivant : 
Ligne 88: Ligne 62:
          
     public void testTotalConversion() {     public void testTotalConversion() {
-        String expected = "10000001";+        String expected = "1000001";
         assertEquals(expected, binString.convert("A"));         assertEquals(expected, binString.convert("A"));
     }     }
Ligne 98: Ligne 72:
   * Exécutez les tests et commentez le résultat dans votre compte-rendu.   * Exécutez les tests et commentez le résultat dans votre compte-rendu.
   * En vous aidant des résultats des tests, corrigez les erreurs dans la classe principale.    * En vous aidant des résultats des tests, corrigez les erreurs dans la classe principale. 
-  * Relancez les tests jusqu’à ce que vous arriviez à faire fonctionne le programme. +  * Relancez les tests jusqu’à ce que vous arriviez à faire fonctionner le programme. 
   * Détaillez la démarche que vous avez suivie dans votre compte-rendu.    * Détaillez la démarche que vous avez suivie dans votre compte-rendu. 
  
  
-===== Partie - Premiers pas en TDD =====+===== Partie - 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.  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 :+1. Étant 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 :
   * “AB” => “BA”   * “AB” => “BA”
   * “RAIN” => “RANI”   * “RAIN” => “RANI”
Ligne 121: Ligne 95:
   * "" => ""   * "" => ""
  
-===== Partie - Problème =====+Question subsidiaire : pensez-vous à d'autres tests qui seraient pertinents mains qui ne figurent pas dans cette liste ? 
 +===== Partie - Problème ===== 
 + 
 +Appelez l'enseignant avant de commencer cette partie.
  
 1. Sélection du sujet.  1. Sélection du sujet. 
Ligne 127: Ligne 104:
 En fonction du chiffre qui vous aura été attribué, réalisez l'un des deux sujets ci-dessous.  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 1.** Écrire 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. +**Sujet 2.** Écrire 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.  2. Travail à faire. 
  
-  * Ecrivez le squelette de la classe principale et commentez-le. +  * Écrivez le squelette de la classe principale et commentez-le. 
-  * Ecrivez l'intégralité de la classe test. Cette classe doit comprendre : +  * Écrivez l'intégralité de la classe test. Cette classe doit comprendre : 
      * des assertions,      * des assertions,
      * des tests vérifiant que les exceptions sont bien levées quand elles doivent l'être,      * des tests vérifiant que les exceptions sont bien levées quand elles doivent l'être,
Ligne 145: Ligne 122:
 4. Sur le nouveau code obtenu : 4. Sur le nouveau code obtenu :
   * Implémentez la classe principale.    * Implémentez la classe principale. 
-  * Appliquez les tests+  * Appliquez les tests.
   * Itérez jusqu'à obtention d'un programme fonctionnel et satisfaisant l'ensemble des tests.   * Itérez jusqu'à obtention d'un programme fonctionnel et satisfaisant l'ensemble des tests.
   * Décrivez votre démarche dans votre compte-rendu.    * Décrivez votre démarche dans votre compte-rendu. 
  
- 5. Questions bonus. 
- 
-  * Pouvez-vous estimer la couverture structurelle de vos tests, pour chacun des exercices réalisés dans ce TP ? Expliquez dans votre compte-rendu.  
-  * Les tests unitaires font parfois appel à la notion de mutation ? Qu'est-ce que cela ? Expliquez et donnez un exemple dans le compte-rendu.