我认为这样可行:
InOrder inOrder = new InOrder(mock);
inOrder.verify(mock).method1();
inOrder.verify(mock).method2();
inOrder.verify(mock).method1();
...但是Mockito说undesired invocation of mock.method1(). Wanted 1 time, but was 2 times.
我将我的代码更改为:
inOrder.verify(times(2), mock).method1();
inOrder.verify(mock).method2();
它应该可以工作,但现在我不测试我想要测试的东西。 有人可以指出我做错了什么,或者Mockito是否因为这种测试而受限制?
答案 0 :(得分:5)
它使用Mockito 1.9.5测试了它并且它可以工作:
@Test
public void foo() {
Runnable outer = Mockito.mock(Runnable.class, "outer");
Runnable inner = Mockito.mock(Runnable.class, "inner");
outer.run();
inner.run();
outer.run();
InOrder order = Mockito.inOrder(outer, inner);
order.verify(outer).run();
order.verify(inner).run();
order.verify(outer).run();
}
因此,如果您没有做任何其他错误,您的代码应该有效。您使用的Mockito版本是什么?