Mockito 验证方法用于检查某些行为是否发生,我们可以使用测试方法代码末尾的 Mockito 验证方法来确保指定方法被调用。
马克思 检查
- Mockito verify() 方法也可以用来测试方法调用次数也一样。我们可以测试准确次数,至少一次,至少在调用次数最多的模糊方法
*我们可以使用
verifyNoMoreInteractions()
所有 verify() 方法调用后,以确保一切都已被验证。如果任何方法调用仍然存在,它将失败并提供正确的信息 verifyZeroInteractions()
行为与verifyNoMoreInteractions() 方法
相同- 我们可以使用
In Order()
方法来验证方法调用次序。我们可以跳过方法调用,但正在验证的方法必须是相同的顺序(
让我们来看看一些mockito验证方法的例子。
Mockito verify() 简单示例
1@Test
2void test() {
3 List<String> mockList = mock(List.class);
4 mockList.add("Pankaj");
5 mockList.size();
6
7 verify(mockList).add("Pankaj");
8}
上面的验证方法将通过,如果在被嘲笑的列表对象上只呼叫一次add(
Pankaj)
。
1verify(mockList, times(1)).size();
如果我们想确保一个方法被调用,但我们不关心论点,那么我们可以使用验证方法的ArgumentMatchers。
1verify(mockList).add(anyString());
2verify(mockList).add(any(String.class));
3verify(mockList).add(ArgumentMatchers.any(String.class));
请注意,org.mockito.Mockito
类为Mockito框架中大多数有用的方法提供静态方法,这有助于我们通过使用导入静态
导入流畅的代码。
Mockito 用次数验证
Mockito verify() 方法是 overloaded,第二种方法是 `verify(T mock, VerificationMode 模式)。
1verify(mockList, times(1)).size(); //same as normal verify method
2verify(mockList, atLeastOnce()).size(); // must be called at least once
3verify(mockList, atMost(2)).size(); // must be called at most 2 times
4verify(mockList, atLeast(1)).size(); // must be called at least once
5verify(mockList, never()).clear(); // must never be called
主持人( )
此方法可以在所有验证方法之后使用,以确保所有交互都被验证,如果对被嘲笑的对象有任何未经验证的交互,它将失败测试。
1// all interactions are verified, so below will pass
2verifyNoMoreInteractions(mockList);
3mockList.isEmpty();
4// isEmpty() is not verified, so below will fail
5verifyNoMoreInteractions(mockList);
verifyNoMoreInteractions()的第二次召唤将失败,错误消息如下:
1org.mockito.exceptions.verification.NoInteractionsWanted:
2No interactions wanted here:
3-> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:36)
4But found this interaction on mock 'list':
5-> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:34)
6***
7For your reference, here is the list of all invocations ([?] - means unverified).
81. -> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:18)
92. -> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:19)
103. [?]-> at com.journaldev.mockito.verify.MockitoVerifyExamples.test(MockitoVerifyExamples.java:34)
Mockito的伟大特征之一是例外信息,它清楚地指出我们的测试在哪里失败,所以我们可以轻松地修复它。
主持人( )
‘verifyZeroInteractions()’ 方法的行为与 verifyNoMoreInteractions() 方法相同。
1Map mockMap = mock(Map.class);
2Set mockSet = mock(Set.class);
3verify(mockList).isEmpty();
4verifyZeroInteractions(mockList, mockMap, mockSet);
Mockito 只验证方法调用
如果我们想验证只有一个方法被调用,那么我们可以使用只有()
与验证方法。
1Map mockMap = mock(Map.class);
2mockMap.isEmpty();
3verify(mockMap, only()).isEmpty();
Mockito 验证召唤的顺序
我们可以使用InOrder
来验证召唤的顺序.我们可以跳过任何方法来验证,但正在验证的方法必须以相同的顺序召唤。
1InOrder inOrder = inOrder(mockList, mockMap);
2inOrder.verify(mockList).add("Pankaj");
3inOrder.verify(mockList, calls(1)).size();
4inOrder.verify(mockList).isEmpty();
5inOrder.verify(mockMap).isEmpty();
摘要
Mockito verify() 方法可以用来确保被调用的模仿对象方法. 如果任何方法调用被错误删除,那么验证方法会引发错误。
您可以从我们的 GitHub 存储库中查看更多 Mockito 示例。