La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

JUnit. Plan Généralités sur le test Présentation de Junit Présentation du framework Codage TestRunner Situation de JUnit.

Présentations similaires


Présentation au sujet: "JUnit. Plan Généralités sur le test Présentation de Junit Présentation du framework Codage TestRunner Situation de JUnit."— Transcription de la présentation:

1 JUnit

2 Plan Généralités sur le test Présentation de Junit Présentation du framework Codage TestRunner Situation de JUnit

3 Le test Problématique Types derreurs Place du test dans le cycle de développement Techniques de test Outils de test

4 Présentation Origine –framework de test écrit en Java par E. Gamma et K. Beck –open source: –version 3.5 Objectifs –test des applications Java –faciliter la création des tests –tests de non régression

5 Junit:Framework Un framework est un ensemble de classes et de collaborations entre les instances de ces classes.

6 Junit:Framework Le source dun framework est disponible Ne sutilise pas directement: il se spécialise Ex: pour créer un cas de test on hérite de la classe TestCase Un framework peut être vu comme un programme à « trous » qui offre la partie commune des traitements et chaque utilisateur le spécialise pour son cas particulier.

7 Junit:Framework template composite

8 Codage (1/6) Organisation du code des tests –cas de Test: TestCase setUp() et tearDown() les méthodes de test –suite de Test: TestSuite Méthodes de test Cas de test Suite de Test Lancement des tests –le TestRunner –non régression

9 Exemple:une classe Money publicclass Money implements IMoney { private int fAmount; private String fCurrency; public Money(int amount, String currency) { fAmount= amount; fCurrency= currency; } /* Adds a money to this money. Forwards the request to the addMoney helper.*/ public IMoney add(IMoney m) { return m.addMoney(this); } … }

10 Codage (2/6) Codage dun « TestCase »: –déclaration de la classe: public class MoneyTest extends TestCase { //délaration des instances private Money f14CHF; private MoneyBag fMB1;... //contructeur public TestedClassTest(String name){ super(Name);} //setUp() et tearDown() //méthodes de test //création dune suite de test //méthode main() }

11 Codage (3/6) -la méthode setUp: -la méthode tearDown: protected void setUp() { //appellée avant chaque méthode de test f12CHF= new Money(12, "CHF"); fMB1= new MoneyBag(f12CHF, f7USD); …} protected void tearDown { //appellée après chaque méthode de test f12CHF = null;... }

12 Codage (4/6) -les méthodes de test: -caractéristiques: -nom préfixé par « test » -contient une assertion public void testBagSimpleAdd() { // {[12 CHF][7 USD]} + [14 CHF] == {[26 CHF][7 USD]} Money bag[]= {new Money(26, "CHF"), new Money(7, "USD")}; MoneyBag expected= new MoneyBag(bag); assertEquals(expected, fMB1.add(f14CHF)); } …

13 Codage (5/6) -regroupement des méthodes de test: -la fonction main: public static Test suite() { TestSuite suite = new TestSuite(MoneyTest.class); return suite; } public static void main() { junit.awtui.TestRunner.run(MoneyTest.class); }

14 Codage (6/6) Codage dune « TestSuite »: –déclaration de la suite: –création dune suite de test: –fonction main() identique à celle dun TestCase public class MaTestSuite extends TestCase { //... } public static Test suite { TestSuite suite = new TestSuite(); suite.addTest(newTestedClass(testBagSimpleAdd); suite.addTest(MoneyTest.suite()); suite.addTestSuite(MoneyTest.class) }

15 Détail dimplémentation Pour exécuter une suite de tests, Junit peut utiliser lintrospection public TestSuite (final Class theClass){ … Method[] = theClass.getDeclaredMethods … } private boolean isTestMethod(Method m) { String name= m.getName(); Class[] parameters= m.getParameterTypes(); Class returnType= m.getReturnType(); return parameters.length == 0 && name.startsWith("test") && returnType.equals(Void.TYPE); }

16 TestRunner Linterface du TestRunner

17 Situation –Rq pratique: ajouter la localisation larchive.jar dans CLASSPATH Avantages –gratuit –simple –intégré à plusieurs IDE(Kawa, VisualAge…) Inconvénients –documentation –exploitation des résultats

18 Evolution Version 3.5 Généralisation des concepts (JXUnit…) Philosophie Xprogramming (xprogramming.com):xprogramming.com –importance des test –outils de tests indispensables

19 import junit.framework.TestCase; import junit.framework.TestSuite; public class ExempleTest extends TestCase { public ExempleTest(String name) { super(name); } protected void setUp() { exemple = new Exemple(); } protected void tearDown() { exemple = null; } public void testExemple() { assert(exemple.getLastResult() == 0); } public void testFactoriel() { exemple.factoriel(4); assert(exemple.getLastResult() == 24); } private Exemple exemple; …} class Exemple { protected int lastResult; public int getLastResult() { return lastResult;} public void factoriel(int n) { int Result; Result = 1; for (int i=1;i<=n;i++) Result = Result * i; lastResult = Result;} public void min(int a, int b) { if (a>b) lastResult = b; else lastResult = a;} …}


Télécharger ppt "JUnit. Plan Généralités sur le test Présentation de Junit Présentation du framework Codage TestRunner Situation de JUnit."

Présentations similaires


Annonces Google