Mockito - 验证方法有什么作用?

j2e*_*nue 24 android unit-testing mocking mockito

假设我有以下psuedo测试代码:

 //Let's import Mockito statically so that the code looks clearer
 import static org.mockito.Mockito.*;

 //mock creation
 List mockedList = mock(List.class);

 //using mock object
 mockedList.add("one");
 mockedList.clear();

 //what do these two verify methods do ?
 verify(mockedList).add("one");
 verify(mockedList).clear();
Run Code Online (Sandbox Code Playgroud)

我一直在显示测试通过,但我不知道验证意味着什么?什么是确切的验证?我知道我嘲笑了一个添加和清除的调用,但这两个验证调用有什么作用?

kin*_*iko 24

Mockito.verify(MockedObject).someMethodOnTheObject(someParametersToTheMethod); 验证您在模拟对象上调用的方法确实被调用.如果没有调用它们,或者使用错误的参数调用它们,或者调用了错误的次数,它们将无法通过测试.


wes*_*ton 8

它断言该方法已被调用,并带有这些参数。

注释掉:

//mockedList.add("one");
Run Code Online (Sandbox Code Playgroud)

或更改其参数,测试将失败。