我认为这可以工作:

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对于此类测试太过局限?

最佳答案

它使用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版本?

关于java - 在顺序很重要的情况下,在Mockito中验证同一方法的两次调用,并在两次调用之间进行验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21042131/

10-09 13:03