我知道Mockito。"(http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/InOrder.html)
尽管在方法中的任何其他模拟之前测试一个模拟是否被调用对我来说很有用,但我找不到一种方法来使用它来检查特定的模拟是否最后被调用。
在我的例子中,我正在测试调用多个接口的中介。在finally语句中,锁被解锁。
我希望我的单元测试能够专门测试是否存在异常,无论发生什么,当然,在任何其他操作之后,无论执行了多少操作,锁都会被释放。
我有相关的mock列表,但我不知道如何告诉Mockito:
-
嘿!有条不紊地进行。验证(amockwisisnotthelast, atLeast(0)).anyMethod()
-
然后InOrder.verify(wantedMock).unlock(),这样我就知道我的mock是所有mock中最后调用的mock。
感谢您的宝贵时间
您可以创建一个像这样的包装器类
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();