User Tools

Site Tools


2013_2014:lp:idse:gl:td:tests

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2013_2014:lp:idse:gl:td:tests [2013/08/07 23:25]
blay [Exécuter les tests JUnit en dehors d'Eclipse]
2013_2014:lp:idse:gl:td:tests [2014/10/10 07:54] (current)
blay [Tests unitaires avec Junit]
Line 5: Line 5:
  
 Nous vous proposons ici d'​apprendre JUnit en utilisant certaines parties de ces tutoriaux. Nous vous proposons ici d'​apprendre JUnit en utilisant certaines parties de ces tutoriaux.
 +
 +
 +Pour les étudiants qui pensent réaliser leur projet ou une partie de leur projet en php,
 +voici [[2014_2015:​lp:​idse:​gl:​td_phpunit|quelques tutoriaux avec PHP UNit]], mais que nous n'​avons pas testé.
 +
  
  
Line 14: Line 19:
 Pour en savoir plus sur l'​environnement JUnit sous eclipse (sur la fin) : http://​www.jmdoudoux.fr/​java/​dejae/​chap011.htm Pour en savoir plus sur l'​environnement JUnit sous eclipse (sur la fin) : http://​www.jmdoudoux.fr/​java/​dejae/​chap011.htm
  
 +===== Compléter les tests par la gestion des exceptions =====
  
 +Reprenez l'​exemple ci-après pour tester la gestion des exceptions : 
 +  - compléter la classe précédente pour lui ajouter la division (vous pouvez/​devez renommer la classe);
 +  - créer une autre classe de tests pour tester uniquement la division.
 +
 +Voir ici : http://​rpouiller.developpez.com/​tutoriels/​java/​tests-unitaires-junit4/#​LIII-B
 ===== Comprendre les annotations ===== ===== Comprendre les annotations =====
 http://​www.vogella.com/​articles/​JUnit/​article.html#​usingjunit_annotations http://​www.vogella.com/​articles/​JUnit/​article.html#​usingjunit_annotations
Line 29: Line 40:
   * //​fail//​ Provoque l'​échec du test   * //​fail//​ Provoque l'​échec du test
  
 +
 +===== Fixture : la mise en place des tests avec setUp et tearDown =====
 +
 +**D'​après [[http://​www-igm.univ-mlv.fr/​~dr/​XPOSE2003/​JUnit_tour/#​5.3.Fixture : la mise en place des tests|Ce tutoriel]]**
 +
 +Une grande partie du code d'un test unitaire sert établir les conditions d'​exécution du dit test. Au sein d'un même TestCase, il peut arriver que toutes les méthodes de test aient besoin d'un minimum de chose (une connexion à une base de données par exemple).
 +
 +La mise en place de ces conditions est prévue par le framework JUnit. Plutôt que chacun de vos tests appelle une méthode de mise en place, puis une méthode de nettoyage, le framework JUnit lance automatiquement avant un test la méthode setUp, et la méthode tearDown à son issue. Libre à vous d'​implémenter ces méthodes si vos tests ont tous besoin des mêmes choses pour fonctionner.
 ===== Créer une suite de tests JUnit ===== ===== Créer une suite de tests JUnit =====
 +
 +
 +Vous allez à présent créer une suite de tests : 
 +{{ :​2013_2014:​lp:​idse:​gl:​td:​testsuite.png?​nolink&​300 |Eclipse}}
 +
 +Vous pouvez comparer le code généré avec le code que voici : 
 +[[http://​rpouiller.developpez.com/​tutoriels/​java/​tests-unitaires-junit4/#​LVII]]
 +
 +
 +
 http://​www.vogella.com/​articles/​JUnit/​article.html#​juniteclipse_testsuite http://​www.vogella.com/​articles/​JUnit/​article.html#​juniteclipse_testsuite
    
 +
 +===== Tests paramétrés =====
 +
 +[[http://​rpouiller.developpez.com/​tutoriels/​java/​tests-unitaires-junit4/#​LVI|Basé sur cet exemple.]]
 +
 +
 +//Les tests paramétrés permettent d'​exécuter plusieurs fois un cas de tests avec des valeurs différentes. Le cas de test doit être annoté avec @RunWith avec pour valeur Parameterized. Les paramètres sont indiqués par une méthode annotée avec @Parameters retournant une Collection. Le cas de tests paramétrés doit comporter un constructeur correspondant aux paramètres.//​
 +
 +Voici ci-après un exemple de tests paramétrés.
 +Adaptez le à votre exemple.
 +
 +<code java>
 +package math;
 +
 +import static org.junit.Assert.*;​
 +
 +import java.util.Arrays;​
 +import java.util.List;​
 +
 +import org.junit.After;​
 +import org.junit.Before;​
 +import org.junit.Test;​
 +import org.junit.runner.RunWith;​
 +import org.junit.runners.Parameterized;​
 +import org.junit.runners.Parameterized.Parameters;​
 +
 +@RunWith(Parameterized.class)
 +public class ParametreTests {
 +
 +   Calculator op;
 +   @Parameters
 +     public static List<​Object[]>​ getParametres() {
 +         return Arrays.asList(new Object[][] {
 +                 { 0, 0, 0 },
 +                 { 1, 3, 4 },
 +                 { 200, 800, 1000 } } );
 +     }
 +
 +     int first;
 +     int second;
 +     int result ;
 +     ​
 + ​public ParametreTests(int premier, int second, int res) {
 +         first = premier;
 +         this.second = second;
 +         result = res;
 +     }
 +     ​
 + @Before
 + public void setUp() throws Exception {
 + op = new Calculator();​
 + }
 +
 + @After
 + public void tearDown() throws Exception {
 + }
 +
 +    @Test
 +    ​public void testCalculer() throws Exception {
 +    System.out.println(first + "+ " + second +"​="​+ result);
 +     assertEquals(first,​ second, result);
 +    }
 +}
 +</​code>​
 +
 +
 +
 ===== Exécuter les tests JUnit en dehors d'​Eclipse ===== ===== Exécuter les tests JUnit en dehors d'​Eclipse =====
 http://​www.vogella.com/​articles/​JUnit/​article.html#​juniteclipse_code http://​www.vogella.com/​articles/​JUnit/​article.html#​juniteclipse_code
  
  
-====== Tests d'​intégrations avec easyMock ====== 
  
-http://​www.vogella.com/​articles/​EasyMock/​article.html 
 ===== A vous !! ===== ===== A vous !! =====
  
Line 46: Line 140:
   * Continuez!   * Continuez!
  
 +<note warning>​N'​oubliez pas de commiter vos codes et les tests !!</​note>​
 +
 +===== A la fin de cette séance =====
 + 
 +<box round  rgb(175,​238,​238) rgb(255,​255,​204) 97%|Je sais, j'ai :   >
 +  * A quoi servent les tests? Quels types de tests existent-ils ?
 +  * Avancé sur le développement du bus et j'ai créé les tests unitaires associés à mes codes;
 +  * Utilisé le gestionnaire de version pour sauvegarder mes codes;
 +
 +</​box>​
 ===== Références ===== ===== Références =====
  
2013_2014/lp/idse/gl/td/tests.1375910738.txt.gz · Last modified: 2013/08/07 23:25 by blay