1. Общ преглед
Тази готварска книга илюстрира как да използвате Mockito за проверка в различни случаи.
В формата на готварската книга е пример фокусирани и практично - без излишни подробности и обяснения необходими.
Ще се подиграем на едно просто изпълнение на списъка :
public class MyList extends AbstractList { @Override public String get(final int index) { return null; } @Override public int size() { return 0; } }
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 и сега Mockito . Целта е тази информация да бъде лесно достъпна онлайн - и да се добавя към нея, когато попадна на нов полезен пример.
Внедряването на всички тези примери и кодови фрагменти може да бъде намерено в GitHub - това е проект, базиран на Maven, така че трябва да е лесно да се импортира и да се изпълнява както е.