我有一个 BarService
与多个相关的 update
方法如下:
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做我想做的事?基本上,检查是否在不考虑参数的情况下调用重载方法?
2条答案
按热度按时间ne5o7dgx1#
您绝对不需要手动设置“验证规范”来列出未使用的方法(在这里暗示的范围内)。明天添加新方法时会发生什么?然后您将不得不转向所有的测试并在那里添加新方法。这不是一个可持续的模式!
取而代之的是:
确认你打算打这些电话
然后打电话
verifyNoMorInteractions()
在模拟对象上,以确保没有调用其他方法ghhaqwfi2#
如果bar是一个mock,并且您完全不希望交互,那么您可以使用mockito的verifyzerointeractions方法,如下所示;