Mardi 27 septembre 2005

Rappel :

JUnit définit 3 classes principales:

TestCase qui est une classe de test. Chaque classe de test dérive de TestCase qui elle-même dérive de la classe Test qui est une classe de test. Chaque classe de test dérive de qui elle-même dérive de la classe .

TestSuite qui est un ensemble de tests qui dérive de la classe Test et qui contient des instances de la classe Test . Elle peut donc contenir des TestCase ou d'autres TestSuite ( Design Pattern "Composite") qui est un ensemble de tests qui dérive de la classe et qui contient des instances de la classe Test . Elle peut donc contenir des TestCase ou d'autres TestSuite ( "Composite")

TestRunner qui permet de lancer l'exécution d'une liste de Test. qui permet de lancer l'exécution d'une liste de Test.

Pour utiliser ce framework, il suffit donc d'écrire des classes de test dérivées de TestCase, placer une instance de chaque test dans une hiérarchie de TestSuite et enfin donner le tout à un TestRunner pour qu'il l'exécute.

Les méthodes de test

Dans toutes les précédentes versions, Junit utilisait la réflexion et les règles de nommage Sun pour localiser les méthodes de test.

import junit.framework.TestCase;

public class CalculerSalaireTest extends TestCase {

private int salaireMensuel = 1500 ;

private int prime = 5000;

public void testCalculerSalaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

Dans JUnit 4, les tests sont identifies par l’annotation suivante: @Test

import org.junit.Test;

import junit.framework.TestCase;

public class CalculerSalaireTest extends TestCase {

private int salaireMensuel = 1500 ;

private int prime = 5000;

@Test void testCalculerSalaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

L’avantage de l’annotation @Test est que vous n’avez plus besoin de nommer vos méthodes testNomDeMaMethode().

Du coup il est possible de renommer les fonctions de test de la manière que l’on veut.

import org.junit.Test;

import junit.framework.TestCase;

public class CalculerSalaireTest extends TestCase {

private int salaireMensuel = 1500 ;

private int prime = 5000;

@Test void SalaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

Il n’est plus nécessaire d’étendre la classe TestCase pour avoir une classe de test. L’annotation @Test et l’import de la classe d’assertion (junit.Assert) suffit pour pouvoir utiliser les nombreuses methodes assertXXX().

import org.junit.Assert;

public class CalculerSalaireTest{

private int salaireMensuel = 1500 ;

private int prime = 5000;

@Test void salaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

YoIl est aussi possible d’utiliser la notion d’import statique du JDK 1.5.

 

import static org.junit.Assert.assertEquals;

public class CalculerSalaireTest{

private int salaireMensuel = 1500 ;

private int prime = 5000;

 

@Test void salaireAnnuel() {

int salaireAnnuel = salaireMensuel *12 + prime;

assertEquals(23000, salaireAnnuel);

}

}

Cette approche permet de mieux tester les méthodes protected car la classe de test peut étendre la classe à tester.

 

 

 

 

 

 

par kasmi publié dans : Java
ajouter un commentaire commentaires (0)    créer un trackback trackback (1)    recommander

Commentaires

Aucun commentaire pour cet article

Trackbacks

Calendrier

Mai 2008
L M M J V S D
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
<< < > >>
créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus