2016-02-20 59 views
0

“返回”我测试的函数,而以下结构:如何验证一个void方法的Mockito

void method1() { 
    if(booleanCondition1) { 
     return; 
    } 
    callMethod2(); 
    callMethod3(); 
... 
.. 
    callMethod-n(); 
} 

我不得不写这样的模拟测试,当booleanCondition1值为TRUE。 一种方法是确保callMethod2()callMethod3()等等,直到callMethod-n()从不被调用(使用Mockito.never())。

有没有这样做的有效方式,而不是确保返回后的所有语句都没有被调用?

换句话说,我可以验证是否使用Mockito调用“return”语句吗?

回答

1

您无法测试遇到哪个return声明,但可以执行verifyZeroInteractionsverifyNoMoreInteractions以涵盖很多verify(mock, never())声明。

谨慎使用 - verifyNoMoreInteractions如果过度使用会导致脆性测试。

+0

嗨,杰夫,这将是我的一半问题。我还需要验证Spied对象(不是mock)上的某些方法未被调用。侦查目标是否也有类似的方法? – venkataratnam

+0

@venkataratnam这些电话以及Mockito的其他大部分电话都是为了间谍和嘲笑而工作。 –

+0

我在一个像这样构建的对象(Instance it = spy(new Instance())上试过这个,我得到一个错误,说“不是模拟” – venkataratnam