You are on page 1of 12

Test unitaires avec JUnit

JUnit
Jérôme Cheynet
Les test unitaires : théorie

Tester les méthodes d'une classe

Un test par méthode, un test case par
classe

Un test case fonctionne séparemment de
l'application


Avantages

Composants validés : meilleure qualité du produit
final

vite un !ug causé par une régression

"orce # séparer interface graphique et
implémentation
Les tests unitaires : vous en avez
déjà fait

$emple : classe calculatrice

Add seulement

%ro!l&mes :

'om!reu$ Affichages ()croll !lind*

+emande !eaucoup d'efforts
Qu'est ce que JUnit ?

"rame,or- pour faire des tests :
standardise la fa.on de faire les tests
unitaires

)tandardise :

/es classes de tests 0# vous de les écrire1

/'affichage des résultats des tests 0programme
d'affichage fourni1
Ecrire un test

Classes de tests (standardisées*

Classe qui étend 2unit3frame,or-3TestCase

'e contient pas de main

Contient des méthodes test44444401

Chargées automatiquement

/es méthodes doivent contenir des assertions

assertTrue0!ool condition1

assertquals0int a, int !1

fail01
Ecrire un test

$emple

Calculatrice simple 0add1


Configuration : clipse installé

clipse int&gre un 5i6ard

clipse permet de lancer l'interface graphique
JUnit sur une classe de test
JUnit appliqué à un projet

Convention de nommage

Convention pour structurer le pro2et

Convention pour réaliser les tests

Travail en !inome autour d'une spécification

7nterface puis tests puis implémentation

Test si possi!le non triviau$

Test des méthodes pu!liques

$écuter les tests en m8me temps que la
compilation
JUnit et nt

n pratique, la !arre vert ou rouge est trop
lente : utiliser l'interface te$te

)ous clipse, créer un fichier !uild3$ml

%ermet de séparer les tests des classes
normales

)rc9:ain

src9Tests

JUnit et nt

+émonstration

Classe (Calculatrice* pour calculer ; opérations

Classe (Calculatrice étendue* pour faire le carré
d'un nom!re

< test case

= test suite


Compilation avec Ant
JUnit et nt
nt lance le testrunner de JUnit
 <target name="runtests" depends="compiletests" if="junit.present">
 <java fork="yes" classname="junit.textui.TestRunner"
 taskname="junit" failonerror="true">
 <arg value="fr.umlv.exposeJUnit.calculators.llTests"!>
 <classpat">
 <#$$ TestRunner se trouve dans junit.jar $$>
 <pat"element location="%&'(rogram
)iles'junit*.+.,'junit.jar"!>
 <#$$ -es classes . tester sont dans un jar $$>
 <pat"element location="/uild!li/!01app.name2.jar" !>
 <#$$ -es classes de test sont dans un r3pertoire $$>
 <pat"element location="/uild!testcases" !>
 <!classpat">
 <!java>
 <!target>
Tips pour nt

Ant ne trouve pas un compilateur 2avac :
deu$ solutions

)pécifier # eclipse une autre machine virtuelle

5indo,s9%references9Ant9>untime9>untime
Classpath : a2outer li!9tools32ar qui est dans le
répertoire 2ava home

Ant ne conna?t pas JUnit : deu$ solutions

Configurer Ant via clipse : 5indo, 9
%references 9 Ant 9 a2outer le 2ar de 2unit

)pécifier le classpath dans le fichier !uild3$ml

Attention avec les accents

)i vous ne spécifie6 pas le 2eu de caract&re
utilisé, il ne doit pas y avoir d'accents m8me dans
les commentaires
!résentation JUnit
@uestions 9 réponses