Ленивая проверка с Mockito 2

Ленивая проверка с Mockito 2

1. Вступление

В этом коротком руководстве мы рассмотрим ленивую проверку в Mockito 2.

Вместо того, чтобы быстро работать с ошибками, Mockito позволяет нам видеть все результаты, собранные и сообщенные в конце теста.

2. Maven Зависимости

Начнем с добавления зависимостиMockito 2:


    org.mockito
    mockito-core
    2.21.0

3. Ленивая проверка

The default behavior of Mockito is to stop at the first failure т.е. нетерпеливо - подход также известен какfail-fast.

Иногда нам может потребоваться выполнить и сообщить обо всех проверках - независимо от предыдущих сбоев.

VerificationCollector - это правило JUnit, которое собирает все проверки в методах тестирования.

Они выполняются и сообщаются в конце теста, если есть сбои:

public class LazyVerificationTest {

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

    // ...
}

Давайте добавим простой тест:

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

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

При выполнении этого теста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.

Без правилаVerificationCollector сообщается только о первой проверке:

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. Заключение

Мы быстро взглянули на то, как мы можем использовать ленивую проверку в Mockito 2.

Также, как всегда, можно найти образцы кодаover on GitHub.