1. Overview
This cookbook illustrates how to use Mockito verify in a variety of use cases.
The format of the cookbook is example-focused and practical — no extraneous details and explanations necessary.
We’re going to be mocking a simple list implementation:
public class MyList extends AbstractList<String> {
public String get(final int index) {
public class MyList extends AbstractList<String> {
@Override
public String get(final int index) {
return null;
}
@Override
public int size() {
return 0;
}
}
public class MyList extends AbstractList<String> {
@Override
public String get(final int index) {
return null;
}
@Override
public int size() {
return 0;
}
}
2. The Cookbook
Verify simple invocation on mock:
List<String> mockedList = mock(MyList.class);
verify(mockedList).size();
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList).size();
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList).size();
List<String> mockedList = mock(MyList.class);
verify(mockedList, times(1)).size();
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, times(1)).size();
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, times(1)).size();
Verify no interaction with the whole mock occurred:
List<String> mockedList = mock(MyList.class);
verifyNoInteractions(mockedList);
List<String> mockedList = mock(MyList.class);
verifyNoInteractions(mockedList);
List<String> mockedList = mock(MyList.class);
verifyNoInteractions(mockedList);
Verify no interaction with a specific method occurred:
List<String> mockedList = mock(MyList.class);
verify(mockedList, times(0)).size();
List<String> mockedList = mock(MyList.class);
verify(mockedList, times(0)).size();
List<String> mockedList = mock(MyList.class);
verify(mockedList, times(0)).size();
Verify there are no unexpected interactions — this should fail:
List<String> mockedList = mock(MyList.class);
verify(mockedList).size();
verifyNoMoreInteractions(mockedList);
List<String> mockedList = mock(MyList.class);
mockedList.size();
mockedList.clear();
verify(mockedList).size();
verifyNoMoreInteractions(mockedList);
List<String> mockedList = mock(MyList.class);
mockedList.size();
mockedList.clear();
verify(mockedList).size();
verifyNoMoreInteractions(mockedList);
Verify order of interactions:
List<String> mockedList = mock(MyList.class);
mockedList.add("a parameter");
InOrder inOrder = Mockito.inOrder(mockedList);
inOrder.verify(mockedList).size();
inOrder.verify(mockedList).add("a parameter");
inOrder.verify(mockedList).clear();
List<String> 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<String> 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<String> mockedList = mock(MyList.class);
verify(mockedList, never()).clear();
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, never()).clear();
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, never()).clear();
Verify an interaction has occurred at least a certain number of times:
List<String> mockedList = mock(MyList.class);
verify(mockedList, atLeast(1)).clear();
verify(mockedList, atMost(10)).clear();
List<String> mockedList = mock(MyList.class);
mockedList.clear();
mockedList.clear();
mockedList.clear();
verify(mockedList, atLeast(1)).clear();
verify(mockedList, atMost(10)).clear();
List<String> mockedList = mock(MyList.class);
mockedList.clear();
mockedList.clear();
mockedList.clear();
verify(mockedList, atLeast(1)).clear();
verify(mockedList, atMost(10)).clear();
Verify interaction with exact argument:
List<String> mockedList = mock(MyList.class);
verify(mockedList).add("test");
List<String> mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add("test");
List<String> mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add("test");
Verify interaction with flexible/any argument:
List<String> mockedList = mock(MyList.class);
verify(mockedList).add(anyString());
List<String> mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add(anyString());
List<String> mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add(anyString());
Verify interaction using argument capture:
List<String> mockedList = mock(MyList.class);
mockedList.addAll(Lists.<String> newArrayList("someElement"));
ArgumentCaptor<List> argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(mockedList).addAll(argumentCaptor.capture());
List<String> capturedArgument = argumentCaptor.<List<String>> getValue();
assertThat(capturedArgument, hasItem("someElement"));
List<String> mockedList = mock(MyList.class);
mockedList.addAll(Lists.<String> newArrayList("someElement"));
ArgumentCaptor<List> argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(mockedList).addAll(argumentCaptor.capture());
List<String> capturedArgument = argumentCaptor.<List<String>> getValue();
assertThat(capturedArgument, hasItem("someElement"));
List<String> mockedList = mock(MyList.class);
mockedList.addAll(Lists.<String> newArrayList("someElement"));
ArgumentCaptor<List> argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(mockedList).addAll(argumentCaptor.capture());
List<String> capturedArgument = argumentCaptor.<List<String>> getValue();
assertThat(capturedArgument, hasItem("someElement"));
3. Conclusion
The goal of this guide is to have this information readily available online. I’ve published a few similar development cookbooks on Google Guava and Hamcrest.
The implementation of all these examples and code snippets can be found over on GitHub. This is a Maven-based project, so it should be easy to import and run as it is.
Credits : https://www.baeldung.com/mockito-verify