annexe 1 tests unitaires d'applications java avec junit
TRANSCRIPT
![Page 1: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/1.jpg)
Annexe 1
Tests unitaires d'applications Java avec JUNIT
![Page 2: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/2.jpg)
JUNIT
2M.Romdhani, INSAT, Janvier 2009
Présentation
Architecture
Terminolgie:Assertions, TestCase, Fixture, TestSuite,
TestRunner ,Errors&Failures
Ecriture deTest
Exécution de Test:TestCase, TestSuite, AllTests
Contenu
![Page 3: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/3.jpg)
JUNIT
3M.Romdhani, INSAT, Janvier 2009
JUnit désigne un framework de rédaction et d'exécutions de tests unitaires.
Imaginé et développé en Java par Kent Beck et Erich Gamma.
IL représente une instance de l’architecture « xUnit »
Basé sur le patron de conception [Gamma95]
C’est un outil gratuit et open source
De nombreux IDE intègrent Junit : Eclipse, NetBeans, Jbuilder, …
Présentation de JUNIT
![Page 4: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/4.jpg)
JUNIT
4M.Romdhani, INSAT, Janvier 2009
Architecture
![Page 5: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/5.jpg)
JUNIT
5M.Romdhani, INSAT, Janvier 2009
static void assertTrue(boolean condition)
static void assertFalse(boolean condition) Vérifie si condition est vraie/fausse.
static void assertEquals(expected, actual) Vérifie que expected & actual sont égaux.
static void assertSame(expected, actual)
static void assertNotSame(expected, actual) Vérifie que expected & actual référent au même objet.
static void assertNull(Object objet)
static void assertNotNull(Object objet) Vérifie que objet est null/pas null.
static void fail() Provoquer l’echec du test.
Terminologie : les assertions
![Page 6: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/6.jpg)
JUNIT
6M.Romdhani, INSAT, Janvier 2009
Ecrire une classe de test consiste à: hériter de la classe TestCase
implémenter plusieurs méthodes nommées test<f>()
utiliser des assertions (assertXXX()):
⁻ asserTrue(1 > 0);
⁻ assertEquals(7,3+4);
Terminologie : les tests cases
![Page 7: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/7.jpg)
JUNIT
7M.Romdhani, INSAT, Janvier 2009
C’est le code de mise en place du contexte de test:
Des sous-classes de TestCase qui ont plusieurs méthodes testXXX() peuvent utiliser les méthodes setUp() et tearDown() pour initialiser, resp. nettoyer, le contexte commun aux tests (= fixture)
Chaque test s’exécute dans le contexte de sa propre installation, en appelant setUp() avant et tearDown() après chaque méthode de test.
Pour deux méthodes, exécution équivalente à :
⁻ setUp(); testMethod1(); tearDown();
⁻ setUp(); testMethod2(); tearDown();
Le contexte est défini par des attributs du TestCase.
Terminologie : les fixtures
![Page 8: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/8.jpg)
JUNIT
8M.Romdhani, INSAT, Janvier 2009
Une TestSuite peut être formée de TestCase ou de TestSuite.
Elle appelle automatiquement toutes les méthodes testXXX() de chaque TestCase.
2 possibilités pour construire une TestSuite: explicitement:
− Ajouter les méthodes à tester en faisant appel à la méthode addTest(Test test):
public void addTest(Test test)
utilisant l’introspectionpublic TestSuite(java.lang.class testClass)
⁻ Adds all the methods starting with "test" as test cases to the suite.
Terminologie : les tests suites
![Page 9: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/9.jpg)
JUNIT
9M.Romdhani, INSAT, Janvier 2009
Utilitaires pour lancer une suite de tests:
On trouve les utilitaires JUnit
Textuel: junit.textui.TestRunner.run(TestClass.class);
Graphique: Awt:
junit.awtui.TestRunner.run(TestClass.class); Swing:
junit.swingui.TestRunner.run(TestClass.class);
On trouve les utilitaires liés aux plugins intégrés aux IDE :
Terminologie : les tests runners
![Page 10: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/10.jpg)
JUNIT
10M.Romdhani, INSAT, Janvier 2009
JUnit distingue entre les erreurs et les échecs.
« Failure » = assertion (assertXXX) qui échoue.
« Error » = Exception non attendue.
Lors d’une détection d’une « Failure » ou « Error » dans une méthode de test, Junit:⁻ Interrompt l’exécution de cette méthode.⁻ Lance l’exécution de la méthode de test suivante.
Nombre de méthodes de test
exécutées
Nombre d’exceptions
Nombre d’échecs
Terminologie : Errors et Failure
![Page 11: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/11.jpg)
JUNIT
11M.Romdhani, INSAT, Janvier 2009
Un « TestCase » avec « fixture »:
Ecriture d'un test (1)
![Page 12: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/12.jpg)
JUNIT
12M.Romdhani, INSAT, Janvier 2009
Résultats:
Ecriture des méthodes de test:
Ecriture d'un test (2)
![Page 13: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/13.jpg)
JUNIT
13M.Romdhani, INSAT, Janvier 2009
1ère méthode (utilisant Eclipse):
JJUUnitnit Exécution de test(1):TestCase
2ème méthode (utilisant un « TestRunner »):
![Page 14: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/14.jpg)
JUNIT
14M.Romdhani, INSAT, Janvier 2009
JJUUnitnit Exécution de test(2):TestSuite
On définit dans toutes les classes de Test la méthode public static TestSuite suite(){}
![Page 15: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/15.jpg)
JUNIT
15M.Romdhani, INSAT, Janvier 2009
JJUUnitnit Exécution de test(3):AllTests
On ajoute les« TestSuite » de tous les « TestCase » dans un nouveau « TestSuite ».
![Page 16: Annexe 1 Tests unitaires d'applications Java avec JUNIT](https://reader036.vdocuments.pub/reader036/viewer/2022062512/551d9dda497959293b8e7bf1/html5/thumbnails/16.jpg)
JUNIT
16M.Romdhani, INSAT, Janvier 2009
JJUUnitnit JUnit 4:nouveautés
On utilise les annotations sur les méthodes à la place des conventions de noms des méthodes:
@Test indiquer une méthode de test
@Before indiquer une méthode setUp
@After indiquer une méthode tearDown
Plus besoin d’hériter de TestCase.
Plus besoin de créer une TestSuite.
On ne distingue plus entre « Failure » et « Error ».
On importe < org.junit.* >