Перейти к основному содержимому

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

· 2 мин. чтения

1. Введение

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

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

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

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

<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.21.0</version>
</dependency>

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

Поведение Mockito по умолчанию — останавливаться при первом сбое, т. е. нетерпеливо — этот подход также известен как отказоустойчивый .

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

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();
}

Когда этот тест будет выполнен, будет сообщено об ошибках обеих проверок :

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

2. Wanted but not invoked:
arrayList.clear();
-> at com.foreach.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.foreach.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:19)
Actually, there were zero interactions with this mock.

4. Вывод

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

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