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.
Aucun commentaire pour cet article
| 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 | |||||
|
||||||||||
Commentaires