mockito5.4.0单元测试(6) --按顺序校验mock对象的调用顺序--InOrder对象的使用
mockito官方文档地址: https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#exact_verification
按顺序验证是灵活的——您不必一个接一个地验证所有的交互,只需依次测试那些您感兴趣的交互即可。
此外,您可以创建一个InOrder对象,仅传递与顺序验证相关的mock。
// mock一个对象
List singleMock = mock(List.class);
// 使用mock对象来操作add
singleMock.add("a");
singleMock.add("b");
singleMock.add("c");
singleMock.add("d");
singleMock.add("e");
// InOrder可以保证接下来的校验是按照顺序来校验的,也就是a是第一个被添加的,cd是在之后被添加的
InOrder inOrder = inOrder(singleMock);
inOrder.verify(singleMock).add("b"); // 我们可以从b开始验证,也就是可以直接跳过a
inOrder.verify(singleMock).add("d"); // 但是接下来的验证就必须是b之后的值,也就是c,d之类的,否则InOrder就会起作用,就会报错
inOrder.verify(singleMock).add("b"); // 这一行验证了b,由于b在上一行d之前了,所以执行到这一行会报错,因为违反了InOrder的顺序
end.
![](https://images.cnblogs.com/cnblogs_com/zhuwenjoyce/945554/o_201113020411my-zhifubao-shouqianma.jpeg)