TDD : avec ou sans Mocks ? Par  Anthony Dahanne,  Yannick Ameur,  Stéphane Malbéqui http://blog.valtech.fr
Sommaire de la présentation <ul><li>Qu'est ce qu'un Test Unitaire
Problèmes de dépendances de couches
Plusieurs façons d'y remédier : </li><ul><li>Sans bouchonner
En bouchonnant </li></ul><li>Faut il utiliser un framework de mocks ?
TDD : pourquoi et comment ?
Conclusion </li></ul>
Qu'est ce qu'un test unitaire ? <ul><li>Un test unitaire est du code technique qui teste une petite partie de code fonctio...
Un test unitaire doit être </li><ul><li>indépendant
répétable
simple et rapide à développer et à exécuter
Prochain SlideShare
Chargement dans…5
×

TDD avec ou sans mock

525 vues

Publié le

S'il est facile de comprendre l'intérêt d'un code bien testé, la mise en œuvre de tests se heurte souvent au problème des dépendances du code testé : comment s'abstraire de ces dépendances ?
A travers une présentation pratique, où Stéphane Malbéqui, Yannick Ameur et Anthony Dahanne rencontreront et résoudrons plusieurs obstacles à la mise en oeuvre de tests untiataires, vous découvrirez à travers un cas concret la mise en œuvre de TDD !

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive
  • TDD avec ou sans mock

    1. 1. TDD : avec ou sans Mocks ? Par Anthony Dahanne, Yannick Ameur, Stéphane Malbéqui http://blog.valtech.fr
    2. 2. Sommaire de la présentation <ul><li>Qu'est ce qu'un Test Unitaire
    3. 3. Problèmes de dépendances de couches
    4. 4. Plusieurs façons d'y remédier : </li><ul><li>Sans bouchonner
    5. 5. En bouchonnant </li></ul><li>Faut il utiliser un framework de mocks ?
    6. 6. TDD : pourquoi et comment ?
    7. 7. Conclusion </li></ul>
    8. 8. Qu'est ce qu'un test unitaire ? <ul><li>Un test unitaire est du code technique qui teste une petite partie de code fonctionnel telle qu’une classe ou une méthode
    9. 9. Un test unitaire doit être </li><ul><li>indépendant
    10. 10. répétable
    11. 11. simple et rapide à développer et à exécuter
    12. 12. exécutable automatiquement </li></ul></ul>
    13. 13. Problèmes rencontrés... <ul><li>Les applications sont généralement architecturées « en couches »
    14. 14. Ce qui induit des dépendances entre composants et des difficultés à tester </li><ul><li>Lenteur de la dépendance (base de données)
    15. 15. Pas d'accès à la dépendance (composant non disponible)
    16. 16. Comportement non déterministe (temps réel) </li></ul><li>Comment tester du code indépendamment des autres couches ? </li></ul>
    17. 17. Solution <ul><li>Injection des dépendances! </li></ul>
    18. 18. Sans utiliser un framework de Mocks <ul><li>En utilisant des classes anonymes! </li><ul><li>Héritent de ou implémentent la dépendance
    19. 19. En surchargeant les méthodes dont on a besoin </li></ul><li>Orchestrer son code autour de la dépendance </li><ul><li>Extraire le code avant et après l'appel à la dépendance
    20. 20. Ne tester uniquement les méthodes extraites </li></ul></ul>
    21. 21. Un Framework de Mocks ? <ul><li>Pour faciliter la simulation des dépendances </li><ul><li>Sans passer par une classe anonyme
    22. 22. Sans découper le code autour de la dépendance </li></ul><li>Pour vérifier que la dépendance a été correctement utilisée </li><ul><li>Que l'on bien appelé methodeA() 2 fois
    23. 23. Que l'on a bien appelé methodeB(paramA) avec la valeur attendue de paramA </li></ul></ul>
    24. 24. Utilisation d'un framework de mocks <ul><li>Création du mock (create dans EasyMock)
    25. 25. Configuration du mock (expect et return dans EM)
    26. 26. Injection du mock dans la classe testée
    27. 27. Enregistrement du mock (replay dans EM)
    28. 28. Éventuellement, vérification (verify dans EM) </li></ul>
    29. 29. TDD : pourquoi et comment ? <ul><li>Introduit en 1999 par Kent Beck
    30. 30. Si je sais tester mon code, alors je sais l'implémenter !
    31. 31. D'abord faire échouer le test, ensuite écrire une première implémentation </li></ul>
    32. 32. Conclusion <ul><li>Choisir une architecture facilitant les tests
    33. 33. Tester de manière unitaire et découplée
    34. 34. Privilégier les frameworks de tests </li><ul><li>Tests souvent plus faciles à maintenir
    35. 35. Couverture des tests possibles à 100%
    36. 36. Cependant, pas toujours indispensables (cas simples) </li></ul></ul>
    37. 37. Aller Plus loin ! <ul><li>Frameworks de tests unitaires : </li><ul><li>JUnit, TestNG (Java),
    38. 38. MbUnit, Nunit, MsTest (.NET),
    39. 39. TestUnit (Ruby)
    40. 40. PhpUnit (PHP) </li></ul><li>Frameworks de Mocks Objects : </li><ul><li>EasyMock, Moquito (Java),
    41. 41. RhynoMock (.NET),
    42. 42. Mocha (Ruby) </li></ul><li>TDD : </li><ul><li>Pragmatic unit testing with Java & JUNit, Dave Thomas
    43. 43. Test Driven Development by example, Kent Beck
    44. 44. MockObjects.com/book </li></ul></ul>

    ×