Vérification paresseuse avec Mockito 2

Vérification paresseuse avec Mockito 2

1. introduction

Dans ce court didacticiel, nous examinerons les vérifications différées dans Mockito 2.

Au lieu d'échouer rapidement, Mockito nous permet de voir tous les résultats collectés et rapportés à la fin d'un test.

2. Dépendances Maven

Commençons par ajouter la dépendanceMockito 2:


    org.mockito
    mockito-core
    2.21.0

3. Vérification paresseuse

The default behavior of Mockito is to stop at the first failure c'est-à-dire avidement - l'approche est également connue sous le nom defail-fast.

Parfois, nous pouvons avoir besoin d'exécuter et de signaler toutes les vérifications, indépendamment des échecs précédents.

VerificationCollector est une règle JUnit qui collecte toutes les vérifications dans les méthodes de test.

Ils sont exécutés et signalés à la fin du test en cas d'échecs:

public class LazyVerificationTest {

    @Rule
    public VerificationCollector verificationCollector = MockitoJUnit.collector();

    // ...
}

Ajoutons un test simple:

@Test
public void testLazyVerification() throws Exception {
    List mockList = mock(ArrayList.class);

    verify(mockList).add("one");
    verify(mockList).clear();
}

Lorsque ce test est exécuté,failures of both verifications will be reported:

org.mockito.exceptions.base.MockitoAssertionError: There were multiple verification failures:
1. Wanted but not invoked:
arrayList.add("one");
-> at com.example.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:21)
Actually, there were zero interactions with this mock.

2. Wanted but not invoked:
arrayList.clear();
-> at com.example.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:22)
Actually, there were zero interactions with this mock.

Sans la règleVerificationCollector, seule la première vérification est signalée:

Wanted but not invoked:
arrayList.add("one");
-> at com.example.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:19)
Actually, there were zero interactions with this mock.

4. Conclusion

Nous avons rapidement examiné comment utiliser la vérification paresseuse dans Mockito 2.

De plus, comme toujours, des échantillons de code peuvent être trouvésover on GitHub.