在Mockito中,当顺序很重要时,验证两个同一方法的调用与另一个方法调用之间的调用

Fre*_*son 9 java mockito

我认为这会奏效:

InOrder inOrder = new InOrder(mock);
inOrder.verify(mock).method1();
inOrder.verify(mock).method2();
inOrder.verify(mock).method1();
Run Code Online (Sandbox Code Playgroud)

......但是Mockito说undesired invocation of mock.method1(). Wanted 1 time, but was 2 times.我把我的代码更改为:

inOrder.verify(times(2), mock).method1();
inOrder.verify(mock).method2();
Run Code Online (Sandbox Code Playgroud)

它应该工作,但现在我不测试我想要测试的东西.有人可以指出我做错了什么,或者如果Mockito对这些测试太有限了?

Spa*_*ker 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();
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您没有做任何其他错误,您的代码应该工作.您使用的Mockito版本是什么?