如何使用mockito来验证是否调用了一组重载方法中的任何一个?

gtlvzcf8  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(600)

我有一个 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做我想做的事?基本上,检查是否在不考虑参数的情况下调用重载方法?

ne5o7dgx

ne5o7dgx1#

您绝对不需要手动设置“验证规范”来列出未使用的方法(在这里暗示的范围内)。明天添加新方法时会发生什么?然后您将不得不转向所有的测试并在那里添加新方法。这不是一个可持续的模式!
取而代之的是:
确认你打算打这些电话
然后打电话 verifyNoMorInteractions() 在模拟对象上,以确保没有调用其他方法

ghhaqwfi

ghhaqwfi2#

如果bar是一个mock,并且您完全不希望交互,那么您可以使用mockito的verifyzerointeractions方法,如下所示;

Mockito.verifyZeroInteractions(bar);

相关问题