Mockito Chti JUG

29
Ecrire des tests unitaires est devenu simple.

description

 

Transcript of Mockito Chti JUG

Page 1: Mockito Chti JUG

Ecrire des tests unitaires est devenu simple.

Page 2: Mockito Chti JUG

David Gageot

CTO Algodeal.com «The Crowd Sourced Quant

Hedge Fund»

@dgageotjavabien.net

Page 3: Mockito Chti JUG

Photo: http://www.flickr.com/photos/91082225@N00/3271601712

Dans la salle :

Tests unitaires ?Couverture >50% ?

TDD ?Mocks ?

Page 4: Mockito Chti JUG

Le code modifiépour être testable.

Les frameworks democks verbeux.

La réécriture des testsquand le code change.

L'écriture de helpers/buildersrien que pour les tests.

Fini...

Page 5: Mockito Chti JUG

« 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 »

Page 6: Mockito Chti JUG

Photo: http://lh4.ggpht.com/_hViQXCC13cs/Sg21-wh7znI/AAAAAAAAA48/Piztq3c9cwE/s288/DSCN3658.JPG

Mocksà la main

Contre

Le match

Page 7: Mockito Chti JUG

Round 01 - Les Dummy objects

Page 8: Mockito Chti JUG

« Objet passé en argument mais jamais utilisé »

Dummy object

Page 9: Mockito Chti JUG

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

Plusrobuste

Pas besoin de changer le

code pour le rendre testable

Dummy avec Mockito

Page 10: Mockito Chti JUG

Round 02 - Les Fakes

Page 11: Mockito Chti JUG

« 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.

Page 12: Mockito Chti JUG

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

Page 13: Mockito Chti JUG

Round 03 - les Stubs

Page 14: Mockito Chti JUG

Stub

« Réponses pré-programmées et parfois une mémoire »

Page 15: Mockito Chti JUG

Stub avec Mockito

Pas besoin de classe de test

Moins sensible aux changements

Page 16: Mockito Chti JUG

Assertion plutôt que Vérification

Page 17: Mockito Chti JUG

Round 04 - les Mocks

Page 18: Mockito Chti JUG

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

Page 19: Mockito Chti JUG

Mock

Tester la gestion des exceptions.

Page 20: Mockito Chti JUG

Mock

Tester les appels multiples.

Page 21: Mockito Chti JUG

Mock

Capture de paramètres.

Page 22: Mockito Chti JUG

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

Page 23: Mockito Chti JUG

Kung Fu avec Mockito.

Photo: http://upload.wikimedia.org/wikipedia/commons/d/dd/Wooden-dummy.jpg

Page 24: Mockito Chti JUG

Réponses multiples

Page 25: Mockito Chti JUG

Annotations

Page 26: Mockito Chti JUG

Stubs multi-niveaux

Page 27: Mockito Chti JUG

Beaucoup d’autres fonctionnalités

Mocks partiels pour remplacer certaines méthodes d’un vrai objet.

Syntaxe BDD (given/when/then).

Matchers....

Page 28: Mockito Chti JUG

Merci.Questions / Réponses

Page 29: Mockito Chti JUG

David Gageot

CTO Algodeal.com «The Crowd Sourced Quant

Hedge Fund»

@dgageotjavabien.net