Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mockito. Ecrire des tests unitaires est devenu simple.

dgageot
September 26, 2011
350

Mockito. Ecrire des tests unitaires est devenu simple.

dgageot

September 26, 2011
Tweet

Transcript

  1. Ecrire des tests unitaires
    est devenu simple.
    Monday, September 26, 11

    View Slide

  2. David Gageot
    CTO Algodeal.com
    «The Crowd Sourced Quant
    Hedge Fund»
    @dgageot
    javabien.net
    Monday, September 26, 11

    View Slide

  3. Photo: http://www.flickr.com/photos/[email protected]/3271601712
    Dans la salle :
    Tests unitaires ?
    Couverture >50% ?
    TDD ?
    Mocks ?
    Monday, September 26, 11

    View Slide

  4. Le code modifié
    pour être testable.
    Les frameworks de
    mocks verbeux.
    La réécriture des tests
    quand le code change.
    L'écriture de helpers/builders
    rien que pour les tests.
    Fini...
    Monday, September 26, 11

    View Slide

  5. « Objet passé en argument mais jamais utilisé »
    Dummy object
    « Implémentation simplifiée suffisante pour les tests »
    Fake Object
    Stub
    « Réponses pré-programmées et parfois une mémoire »
    Mock
    « Contrat de collaboration »
    Monday, September 26, 11

    View Slide

  6. Photo: http://lh4.ggpht.com/_hViQXCC13cs/Sg21-wh7znI/AAAAAAAAA48/Piztq3c9cwE/s288/DSCN3658.JPG
    Mocks
    à la main
    Contre
    Le match
    Monday, September 26, 11

    View Slide

  7. Round 01 - Les Dummy objects
    Monday, September 26, 11

    View Slide

  8. « Objet passé en argument mais jamais utilisé »
    Dummy object
    Monday, September 26, 11

    View Slide

  9. Pas de NullPointerException.
    Indépendant de l’évolution constructeur.
    Fonctionne avec les interfaces et les classes.
    Moins de
    tests qui
    changent
    quand le code
    change
    Plus
    robuste
    Pas
    besoin de
    changer le
    code pour le
    rendre testable
    Dummy avec Mockito
    Monday, September 26, 11

    View Slide

  10. Round 02 - Les Fakes
    Monday, September 26, 11

    View Slide

  11. « Implémentation simplifiée suffisante pour les tests »
    Fake Object
    L’implémentation simplifiée peut être +/- complexe :
    HashMap pour une base clef/valeur.
    Base de données mémoire pour remplacer mysql.
    Monday, September 26, 11

    View Slide

  12. Fake avec Mockito
    Pas le rôle d’un framework de Mocks.
    Sauf si le fake n’a pas de mémoire :
    Pas
    besoin de
    changer le
    code pour le
    rendre testable
    Plus facile à
    maitriser
    Monday, September 26, 11

    View Slide

  13. Round 03 - les Stubs
    Monday, September 26, 11

    View Slide

  14. Stub
    « Réponses pré-programmées et parfois une mémoire »
    Monday, September 26, 11

    View Slide

  15. Stub avec Mockito
    Pas besoin de
    classe de test
    Moins
    sensible aux
    changements
    Monday, September 26, 11

    View Slide

  16. Assertion plutôt que Vérification
    Monday, September 26, 11

    View Slide

  17. Round 04 - les Mocks
    Monday, September 26, 11

    View Slide

  18. Mock
    « Vérification de comportement et d'interactions »
    Pas besoin de
    classe de test
    Moins de
    tests qui
    changent
    quand le code
    change
    Pas
    besoin de
    changer le
    code pour le
    rendre testable
    Monday, September 26, 11

    View Slide

  19. Mock
    Tester la gestion des exceptions.
    Monday, September 26, 11

    View Slide

  20. Mock
    Tester les appels multiples.
    Monday, September 26, 11

    View Slide

  21. Mock
    Capture de paramètres.
    Monday, September 26, 11

    View Slide

  22. Round 05 - les Builders
    Monday, September 26, 11

    View Slide

  23. Mock
    « Vérification de comportement et d'interactions »
    Pas besoin de
    classe de test
    Moins de
    tests qui
    changent
    quand le code
    change
    Pas
    besoin de
    changer le
    code pour le
    rendre testable
    Monday, September 26, 11

    View Slide

  24. Mock
    Tester la gestion des exceptions.
    Monday, September 26, 11

    View Slide

  25. Mock
    Tester les appels multiples.
    Monday, September 26, 11

    View Slide

  26. Mock
    Capture de paramètres.
    Monday, September 26, 11

    View Slide

  27. Pas
    besoin de
    changer le
    code pour le
    rendre testable
    Pas d’
    implémentation
    classe pour
    les tests
    Moins de
    tests qui
    changent
    quand le code
    change
    Robuste Lisible Compact
    Monday, September 26, 11

    View Slide

  28. Kung Fu avec Mockito.
    Photo: http://upload.wikimedia.org/wikipedia/commons/d/dd/Wooden-dummy.jpg
    Monday, September 26, 11

    View Slide

  29. Réponses multiples
    Monday, September 26, 11

    View Slide

  30. Annotations
    Monday, September 26, 11

    View Slide

  31. Stubs multi-niveaux
    Monday, September 26, 11

    View Slide

  32. Beaucoup d’autres fonctionnalités
    Mocks partiels pour remplacer certaines
    méthodes d’un vrai objet.
    Syntaxe BDD (given/when/then).
    Matchers.
    ...
    Monday, September 26, 11

    View Slide

  33. Merci.
    Questions / Réponses
    Monday, September 26, 11

    View Slide

  34. David Gageot
    CTO Algodeal.com
    «The Crowd Sourced Quant
    Hedge Fund»
    @dgageot
    javabien.net
    Monday, September 26, 11

    View Slide