我有BarService多个相关的重载update方法,如下所示:
BarService#update(Bar bar);
BarService#update(Bar bar, boolean checkX);
BarService#update(Bar bar, boolean checkX, boolean checkY);
Run Code Online (Sandbox Code Playgroud)
我想确保在特定测试中没有调用它们。目前,我正在这样做:
@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()));
...
}
Run Code Online (Sandbox Code Playgroud)
verify我可以通过将所有调用移至辅助方法来检查所有重载版本来清理此问题:
@Test
public test doFoo_shouldNotUpdateBar() {
setUpTest();
doFoo();
verifyBarServiceNeverUpdates(any(Bar.class));
}
Run Code Online (Sandbox Code Playgroud)
但是有没有办法让 Mockito 做我想做的事情呢?基本上,检查重载方法是否被调用而不考虑其参数?
您绝对不要手动放置列出未使用的方法的“验证规范”(按此处暗示的规模)。明天添加新方法时会发生什么?然后你必须转向所有测试并在那里添加新方法。这不是一个可持续的模式!
反而:
verifyNoMorInteractions()您的模拟对象以确保没有调用其他方法| 归档时间: |
|
| 查看次数: |
402 次 |
| 最近记录: |