User Tools

Site Tools


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

Tests unitaires avec Junit

Il existe énormément de tutoriaux sur l'usage de JUnit sur le Web.

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 quelques tutoriaux avec PHP UNit, mais que nous n'avons pas testé.

Premier test JUnit dans eclipse

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 :

  1. compléter la classe précédente pour lui ajouter la division (vous pouvez/devez renommer la classe);
  2. 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

Méthodes

  • assertEquals Vérifie que deux objets sont égaux
  • assertFalse Vérifie que l'expression est fausse
  • assertNotNull Vérifie que l'objet n'est pas nul
  • assertNotSame Vérifie que deux références ne sont pas les mêmes
  • assertNull Vérifie qu'un objet est nul
  • assertSame Vérifie que deux références sont les mêmes
  • assertTrue Vérifie que l'expression est vrai
  • fail Provoque l'échec du test

Fixture : la mise en place des tests avec setUp et tearDown

D'après 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

Vous allez à présent créer une suite de tests : 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

Tests paramétrés

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.

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);
	   }
}

Exécuter les tests JUnit en dehors d'Eclipse

A vous !!

  • Créer une première classe relative au projet tutoré par exemple la classe Information. Pensez à utiliser sous Eclipe la génération des accesseurs.
  • Associer à votre classe plusieurs méthodes dont par exemple isFrom(String name)
  • Définir les tests unitaires qui vont bien.
  • Continuez!
N'oubliez pas de commiter vos codes et les tests !!

A la fin de cette séance

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;

Références

2013_2014/lp/idse/gl/td/tests.txt · Last modified: 2014/10/10 07:54 by blay