Test unitaire

884 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
884
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
19
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Test unitaire

  1. 1. Tests unitairessimplifier les Assertionsby Guillaume EHRET
  2. 2. Guillaume EHRETDéveloppeur agile depuis 12 anspassé par la case gestion de projet et aujourdhui architecte applicatif pourle compte des laboratoires BoironPour me suivre@guillaumeehrethttp://gplus.to/guillaumeehret
  3. 3. Mon blog http://javamind-fr.blogspot.fr/
  4. 4. Pourquoi ce lightning talk ?Tout développeur connait le principe des testsunitaires et devrait les utiliser
  5. 5. Les TU ne sont pas quune questionde couleurs
  6. 6. ni quune question de % decouverture du code par les tests>80% < 40%
  7. 7. La qualité des tests est aussiimportante que la qualité du code
  8. 8. 10 règles pour améliorer la qualitéde vos tests unitaires
  9. 9. Améliorer la qualité de vos testsen 10 règles1. Principe de la boite noireun unit doit être considéré comme une boite noire à laquelle on passedes paramètres dentrée et qui va soit nous renvoyer un résultatdirectement soit agir sur un système distant2. Granularité- si une méthode et plusieurs comportements ==> plusieurs tests- si un comportement via plusieurs méthodes ==> un seul test3. Consistence dans le tempsattention aux tests liés dates, aux appels asynchrones, services distant...
  10. 10. Améliorer la qualité de vos testsen 10 règles4. Avoir des tests lisibles- la classe de test doit avoir un nom clair. Si elle est liée à une classe onapplique le pattern NomClasseTest- le nom de la méthode doit tout de suite indiquer vos intentions. Utilisezle should. Par exemple getById_ShouldReturn_AnEntity ougetById_ShouldNotReturn_AnEntity_IfIdNull- Forcez vous à utiliser autant voir plus de commentaires dans vos testsque dans votre code5. Utiliser des assertions claires- utiliser un framework tel que FestAssert ou AssertJ (fork de fest assert)- vous pouvez utiliser plusieurs assert dans une méthode de tests maistoujours liés à la vérification du même comportement sinon découper vostests en plusieurs méthodes
  11. 11. Améliorer la qualité de vos testsen 10 règles6. Isolation entre les tests- lordre dexécution ne doit pas influer sur le résultat- remettre le système dans le même état quavant lexécution du test- le setup global dun test ne doit contenir que des initialisationscommunes à tous les tests7. Isolation entre les composantsUtiliser des mocks au maximum pour toutes les interactions externesLe framework Mockito est très simple dutilisation8. Temps dexécutionles tests doivent être joués le plus souvent possibleexécuter les tests complets sur un serveur dintégration continue tel queJenkins
  12. 12. Améliorer la qualité de vos testsen 10 règles9. Automatiser lexécution des tests- automatiser lexécution des différents scénarios de tests et ne pasarrêter lexécution automatique de ces tests une fois que lapplication esten production- Séparer les tests unitaires, dintégration ou fonctionnels dans le processde build10. Pas de catch exceptionutiliser le @Test(expected = MyException.class)si vous tester des cas passant et que votre code retourne des checkedexception rajoutez un throws pour les remonter plus haut
  13. 13. Rendre plus lisible ses assertionsJUnitassertEquals(expected, actual);confirme que égal à expected est lobjet actual?HamcrestassertThat(actual, equalTo(expected));confirme que lobjet actual est égal à expected ?FEST-Assert / AssertJassertThat(actual).isEqualTo(expected);confirme que lobjet actual est égal à expected ?
  14. 14. Référenceshttp://infinitest.github.io/https://github.com/junit-team/junit/wikihttp://hamcrest.org/http://fest.easytesting.org/https://github.com/joel-costigliola/assertj-corehttp://martinfowler.com/articles/nonDeterminism.htmlhttps://code.google.com/p/mockito/

×