Annexe 1 Tests unitaires d'applications Java avec JUNIT

  • View
    107

  • Download
    4

Embed Size (px)

Text of Annexe 1 Tests unitaires d'applications Java avec JUNIT

  • Page 1
  • Annexe 1 Tests unitaires d'applications Java avec JUNIT
  • Page 2
  • JUNIT 2 M.Romdhani, INSAT, Janvier 2009 Prsentation Architecture Terminolgie: Assertions, TestCase, Fixture, TestSuite, TestRunner,Errors&Failures Ecriture deTest Excution de Test: TestCase, TestSuite, AllTests Contenu
  • Page 3
  • JUNIT 3 M.Romdhani, INSAT, Janvier 2009 JUnit dsigne un framework de rdaction et d'excutions de tests unitaires. Imagin et dvelopp en Java par Kent Beck et Erich Gamma. IL reprsente une instance de larchitecture xUnit Bas sur le patron de conception [Gamma95] Cest un outil gratuit et open source De nombreux IDE intgrent Junit : Eclipse, NetBeans, Jbuilder, Prsentation de JUNIT
  • Page 4
  • JUNIT 4 M.Romdhani, INSAT, Janvier 2009 Architecture
  • Page 5
  • JUNIT 5 M.Romdhani, INSAT, Janvier 2009 static void assertTrue(boolean condition) static void assertFalse(boolean condition) Vrifie si condition est vraie/fausse. static void assertEquals(expected, actual) Vrifie que expected & actual sont gaux. static void assertSame(expected, actual) static void assertNotSame(expected, actual) Vrifie que expected & actual rfrent au mme objet. static void assertNull(Object objet) static void assertNotNull(Object objet) Vrifie que objet est null/pas null. static void fail() Provoquer lechec du test. Terminologie : les assertions
  • Page 6
  • JUNIT 6 M.Romdhani, INSAT, Janvier 2009 Ecrire une classe de test consiste : hriter de la classe TestCase implmenter plusieurs mthodes nommes test () utiliser des assertions (assertXXX()): asserTrue(1 > 0); assertEquals(7,3+4); Terminologie : les tests cases
  • Page 7
  • JUNIT 7 M.Romdhani, INSAT, Janvier 2009 Cest le code de mise en place du contexte de test: Des sous-classes de TestCase qui ont plusieurs mthodes testXXX() peuvent utiliser les mthodes setUp() et tearDown() pour initialiser, resp. nettoyer, le contexte commun aux tests (= fixture) Chaque test sexcute dans le contexte de sa propre installation, en appelant setUp() avant et tearDown() aprs chaque mthode de test. Pour deux mthodes, excution quivalente : setUp(); testMethod1(); tearDown(); setUp(); testMethod2(); tearDown(); Le contexte est dfini par des attributs du TestCase. Terminologie : les fixtures
  • Page 8
  • JUNIT 8 M.Romdhani, INSAT, Janvier 2009 Une TestSuite peut tre forme de TestCase ou de TestSuite. Elle appelle automatiquement toutes les mthodes testXXX() de chaque TestCase. 2 possibilits pour construire une TestSuite: explicitement: Ajouter les mthodes tester en faisant appel la mthode addTest(Test test): public void addTest(Test test) utilisant lintrospection public TestSuite(java.lang.class testClass) Adds all the methods starting with "test" as test cases to the suite. Terminologie : les tests suites
  • Page 9
  • JUNIT 9 M.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 lis aux plugins intgrs aux IDE : Terminologie : les tests runners
  • Page 10
  • JUNIT 10 M.Romdhani, INSAT, Janvier 2009 JUnit distingue entre les erreurs et les checs. Failure = assertion (assertXXX) qui choue. Error = Exception non attendue. Lors dune dtection dune Failure ou Error dans une mthode de test, Junit: Interrompt lexcution de cette mthode. Lance lexcution de la mthode de test suivante. Nombre de mthodes de test excutes Nombre dexceptions Nombre dchecs Terminologie : Errors et Failure
  • Page 11
  • JUNIT 11 M.Romdhani, INSAT, Janvier 2009 Un TestCase avec fixture : Ecriture d'un test (1)
  • Page 12
  • JUNIT 12 M.Romdhani, INSAT, Janvier 2009 Rsultats: Ecriture des mthodes de test: Ecriture d'un test (2)
  • Page 13
  • JUNIT 13 M.Romdhani, INSAT, Janvier 2009 1 re mthode (utilisant Eclipse): J U nit J U nit Excution de test(1):TestCase 2 me mthode (utilisant un TestRunner ):
  • Page 14
  • JUNIT 14 M.Romdhani, INSAT, Janvier 2009 J U nit J U nit Excution de test(2):TestSuite On dfinit dans toutes les classes de Test la mthode public static TestSuite suite(){}
  • Page 15
  • JUNIT 15 M.Romdhani, INSAT, Janvier 2009 J U nit J U nit Excution de test(3):AllTests On ajoute les TestSuite de tous les TestCase dans un nouveau TestSuite .
  • Page 16
  • JUNIT 16 M.Romdhani, INSAT, Janvier 2009 J U nit J U nit JUnit 4:nouveauts On utilise les annotations sur les mthodes la place des conventions de noms des mthodes: @Test indiquer une mthode de test @Before indiquer une mthode setUp @After indiquer une mthode tearDown Plus besoin dhriter de TestCase. Plus besoin de crer une TestSuite. On ne distingue plus entre Failure et Error . On importe