Mockito单元测试的所有API以及使用案例
时间: 2023-07-11 22:25:39 浏览: 133
以下是 Mockito 单元测试的所有 API 以及使用案例:
1. `mock()`:创建一个模拟对象,用于替代被测试对象的依赖项。
使用案例:
```
List mockedList = mock(List.class);
```
2. `when()`:设置模拟对象的行为,例如当调用某个方法时返回指定的值。
使用案例:
```
when(mockedList.get(0)).thenReturn("first");
```
3. `verify()`:验证模拟对象的行为是否符合预期,例如验证某个方法是否被调用。
使用案例:
```
verify(mockedList).add("one");
```
4. `any()`:用于表示任意类型的参数。
使用案例:
```
when(mockedList.get(anyInt())).thenReturn("element");
```
5. `eq()`:用于表示特定类型的参数。
使用案例:
```
when(mockedList.get(eq(0))).thenReturn("first");
```
6. `doAnswer()`:用于设置模拟对象方法的行为,例如当调用某个方法时执行自定义的代码。
使用案例:
```
doAnswer(new Answer() {
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
Object mock = invocation.getMock();
return "called with arguments: " + Arrays.toString(args);
}
}).when(mockedList).add(anyString());
```
7. `spy()`:创建一个真实的对象的 spy,可以对其进行部分模拟。
使用案例:
```
List list = new LinkedList();
List spy = spy(list);
```
8. `reset()`:重置模拟对象的状态,以便在多个测试之间重复使用。
使用案例:
```
reset(mockedList);
```
9. `times()`:指定某个方法被调用的次数。
使用案例:
```
verify(mockedList, times(2)).add("once");
```
10. `inOrder()`:用于验证多个模拟对象的方法调用顺序。
使用案例:
```
InOrder inOrder = inOrder(mock1, mock2);
inOrder.verify(mock1).doSomething();
inOrder.verify(mock2).doSomethingElse();
```
11. `timeout()`:指定某个方法的超时时间。
使用案例:
```
verify(mockedList, timeout(100)).add("timeout");
```
12. `doNothing()`:用于设置模拟对象方法的行为,即当调用某个方法时不做任何事情。
使用案例:
```
doNothing().when(mockedList).clear();
```
13. `doThrow()`:用于设置模拟对象方法的行为,即当调用某个方法时抛出异常。
使用案例:
```
doThrow(new RuntimeException()).when(mockedList).clear();
```
14. `doCallRealMethod()`:用于设置模拟对象方法的行为,即当调用某个方法时调用真实对象的实现。
使用案例:
```
doCallRealMethod().when(mockedList).get(0);
```
以上是 Mockito 单元测试的所有 API 以及使用案例。
阅读全文