我知道Mockito.InOrder(http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/InOrder.html)
尽管我已经很好地测试了在方法中的任何其他模拟之前调用了mock,但是我找不到使用它的方法来检查特定模拟是否是最后一次调用。
就我而言,我正在测试一个调用多个接口的中介。在finally语句中,锁被解锁。
我希望我的单元测试能够专门测试是否存在异常,无论发生什么,锁定都会被释放,当然在任何其他操作之后,无论执行了多少次。
我有所涉及的模拟列表,但我无法弄清楚如何告诉Mockito:
嘿! InOrder.verify(aMockWhichIsNotTheLast,atLast(0))。anyMethod()
然后是InOrder.verify(wantedMock).unlock(),所以我知道我的模拟是我所有模拟中调用的最后一个模拟。
感谢您的时间
答案 0 :(得分:0)
您可以创建一个包装类,例如
public final class Mocks
{
private final List<Object> mocks = new ArrayList<>();
public <T> T register(final T mock)
{
mocks.add(Objects.requireNonNull(mock));
return mock;
}
public InOrder inOrder()
{
return Mockito.inOrder(mocks.toArray());
}
public void verifyNoMoreInteractions()
{
Mockito.verifyNoMoreInteractions(mocks.toArray());
}
}
然后您可以使用您的课程:
final Mocks mocks = new Mocks();
final Whatever mock1 = mocks.register(mock(Whatever.class));
final Whatever2 mock2 = mocks.register(mock(Whatever2.class));
final InOrder inOrder = mocks.inOrder();
// verify, verify, verify
mocks.verifyNoMoreInteractions();