Поваренная книга проверки Мокито

Mockito Verify Поваренная книга

1. обзор

Эта поваренная книга иллюстрируетhow to use Mockito verify в различных сценариях использования.

format of the cookbook is example focused и практический - никаких посторонних подробностей и пояснений не требуется.

Мы собираемся реализоватьmocking a simple list:

public class MyList extends AbstractList {

    @Override
    public String get(final int index) {
        return null;
    }
    @Override
    public int size() {
        return 0;
    }
}

Дальнейшее чтение:

Насмешливое Бросание Исключений с использованием Мокито

Научитесь настраивать вызов метода для выдачи исключения в Mockito.

Read more

Возможности Mockito Java 8

Обзор поддержки Java 8 в инфраструктуре Mockito, включая потоки и методы интерфейса по умолчанию

Read more

Пересмешивание частных методов с использованием PowerMock

Узнайте, как PowerMock можно использовать для расширения возможностей Mockito для проверки и проверки частных методов в тестируемом классе.

Read more

2. Поваренная книга

проверить простой вызов на макете

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList).size();

проверить количество взаимодействий с макетом

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, times(1)).size();

проверить, не произошло ли взаимодействия со всем макетом

List mockedList = mock(MyList.class);
verifyZeroInteractions(mockedList);

убедиться, что не произошло взаимодействия с конкретным методом

List mockedList = mock(MyList.class);
verify(mockedList, times(0)).size();

убедитесь, что нет неожиданных взаимодействий - это не должно произойти:

List mockedList = mock(MyList.class);
mockedList.size();
mockedList.clear();
verify(mockedList).size();
verifyNoMoreInteractions(mockedList);

проверить порядок взаимодействий

List mockedList = mock(MyList.class);
mockedList.size();
mockedList.add("a parameter");
mockedList.clear();

InOrder inOrder = Mockito.inOrder(mockedList);
inOrder.verify(mockedList).size();
inOrder.verify(mockedList).add("a parameter");
inOrder.verify(mockedList).clear();

проверить, что взаимодействие не произошло

List mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, never()).clear();

проверить, что взаимодействие произошло хотя бы определенное количество раз

List mockedList = mock(MyList.class);
mockedList.clear();
mockedList.clear();
mockedList.clear();

verify(mockedList, atLeast(1)).clear();
verify(mockedList, atMost(10)).clear();

проверить взаимодействие с точным аргументом

List mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add("test");

проверить взаимодействие с гибким / любым аргументом

List mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add(anyString());

проверить взаимодействие с помощью захвата аргументов

List mockedList = mock(MyList.class);
mockedList.addAll(Lists. newArrayList("someElement"));
ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(mockedList).addAll(argumentCaptor.capture());
List capturedArgument = argumentCaptor.> getValue();
assertThat(capturedArgument, hasItem("someElement"));

3. Заключение

Этот формат является экспериментом - я публикую некоторые из моих кулинарных книг по внутренней разработке по заданной теме - поGoogle Guava,Hamcrest иnow Mockito. Цель состоит в том, чтобы эта информация была легко доступна онлайн и добавлялась к ней всякий раз, когда я сталкиваюсь с новым полезным примером.

Реализация всех этих примеров и фрагментов кодаcan be found on GitHub - это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.