Introduction à Mockito§

Département Informatique, IUT Lyon 1

Creative Commons License

Ce travail est sous licence Creative Commons Attribution-ShareAlike 3.0 France.

1

Introduction à Mockito§

2

Contexte§

3

Liens utiles§

http://mockito.org/

http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html

http://gojko.net/2009/10/23/mockito-in-six-easy-examples/

4

Contexte - Problème§

Lorsque l'on écrit des tests, il nous manque parfois des éléments :

Par ailleurs, quand on fait du test unitaire, on veut éviter au
maximum les effets de bords (dysfonctionnements des autres objets)

Principe de Mockito : simuler les objets "manquants" !

5

Que fait Mockito ?§

Mockito crée des simulacres à partir de n'importe quelle classe ou interface.

Mockito permet de controler le comportement des méthodes, c'est le stubbing

6

Dans quelles situations l'utiliser ?§

7

Quelles sont les fonctionnalités de Mockito ?§

Simuler :

Vérifier, espionner :

8

Vocabulaire§

9

Utilisation de Mockito§

10

Création des mocks§

La création des Mocks se fait soit en utilisant la méthode static mock(), soit en utilisant l'annotation @Mock

Dans le cas de l'annotation les objets doivent être initialisés avec MockitoAnnotations.initMocks(this)

import static org.mockito.Mockito.*;
List mockedList = mock(List.class);
11

Gestion du comportement - Stubbing§

Méthode when

Spécifier une condition et retourner la valeur pour cette condition

when(mockedList.get(0)).thenReturn("toto");
when(mockedList.get(anyInt())).thenReturn("toto");
12

Vérifications en fin de test§

Méthode verify

Mockito conserve une trace des appels aux méthodes des Mocks.

Warning

C'est du test de comportement : on s'assure que la méthode est appelée avec les bons paramètres, et non que le résultat est bon.

13

Espionnage§

Méthode spy

Cette méthode permet d'encapsuler un objet qui existe vraiment.

14

Matchers§

Pour utiliser un ensemble de paramètres

Si on utilise des matchers, tous les arguments de la méthode doivent être des matchers !

15

Pour aller plus loin§

16

Limitations de Mockito§

Mockito ne gère pas :

17

Alternatives à Mockito§

http://jmock.org/

http://easymock.org/

18

Exercice : simulation de traitements sur une BD§

19

Exercice§

L'objectif de l'exercice est de mettre en application les différentes fonctionnalités de Mockito pour simuler le comportement d'un connecteur de bases de donnée.

On considérera que la base contient des clients et des factures.

La correction de l'exercice se fera de façon interactive et collective, au tableau (projection).

20