Présentation de Mockito

A quoi sert un mock ?


  • Comment tester une méthode qui ne retourne rien ?
  • Comment tester une méthode qui interagit avec un autre objet ?


Avec les tests unitaires, nous voulons tester une méthode, mais pas ses dépendances.


Il faut donc faire croire à l’objet que l’on veut tester qu’il va utiliser les objet qu’il doit normalement instancier.

Mockito va donc nous aider à créer des “bouchons” (mock objects) qui vont simuler les objets réels




Pour illustrer l’utilisation de Mockito, nous allons prendre l’exemple d’une classe Calcul, et tester que la méthode Add() ne génère pas d’erreur. Mais cette méthode utilise un service qu’on ne peut pas utiliser dans le test unitaire. Nous allons donc “mocker” ce service, et dire qu’il revoit toujours la même valeur.


public interface RandomService {
public int random();

}


public class Calcul {
RandomService randomService;
int add(int a, int b) {
long result = (long) a + (long) b + randomService.random();
return (int) result;
}
}


public class CalculTest {


@Before
public void setUp() throws Exception {
//initialisation de Mockito
MockitoAnnotations.initMocks(this);
}
@Test
public void shouldReturnAdd() throws Exception {
   Calcul calc = new Calcul();
   //on crée un mock de l'objet RamdomService
   RandomService mockRandomService =
        Mockito.mock(RandomService.class);
   calc.randomService = mockRandomService;
   //On indiquer à Mockito que la méthode
   //random() du service RandomService doit
   //retourner 1 lorsque la méthode add() est invoquée.
   Mockito.when(mockRandomService.random())
    .thenReturn(1);
   int result = calc.add(1, 2);
   assertEquals(4, result);
}
}


Aucun commentaire:

Enregistrer un commentaire