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.
Возможности Mockito Java 8
Обзор поддержки Java 8 в инфраструктуре Mockito, включая потоки и методы интерфейса по умолчанию
Пересмешивание частных методов с использованием PowerMock
Узнайте, как PowerMock можно использовать для расширения возможностей Mockito для проверки и проверки частных методов в тестируемом классе.
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, поэтому его должно быть легко импортировать и запускать как есть.