我有数倍BarService
相关重载update
方法就可以了,就像这样:如何使用Mockito来验证是否有一组重载方法被调用?
BarService#update(Bar bar);
BarService#update(Bar bar, boolean checkX);
BarService#update(Bar bar, boolean checkX, boolean checkY);
我想,以确保他们的没有被称为在一个特定的测试。目前,我这样做:
@Test
public test doFoo_shouldNotUpdateBar() {
setUpTest();
doFoo();
verify(barService, never()).update(any(Bar.class)));
verify(barService, never()).update(any(Bar.class), anyBoolean()));
verify(barService, never()).update(any(Bar.class), anyBoolean(), anyBoolean()));
...
}
我可以通过所有verify
呼叫移动到一个辅助方法来检查所有重载版本打扫一下了一下:
@Test
public test doFoo_shouldNotUpdateBar() {
setUpTest();
doFoo();
verifyBarServiceNeverUpdates(any(Bar.class));
}
但有一个如何让Mockito在这里做我想做的事?基本上,要检查重载的方法是否被调用,而不考虑其参数?
这是一个可行的选择,但不幸的是,它污染了我的测试与一堆我不想要的东西。让我们说'barService'在调用'update'之前做'X'和'Y'。现在我必须在调用'verifyNoMoreInteractions(barService)'之前明确'验证(barService).doX'和'验证(barService).doY'。但在这个测试中,我实际上并不知道或关心'doX'和'doY',所以他们只是分心。 – Sasgorilla