【发布时间】:2023-03-25 21:20:01
【问题描述】:
我有一个代码,里面有一个条件,在某些条件下什么都不做,如下所示。我想测试那个特定的场景。
被测代码,返回语句:
public void someTask(){
if(somecondition){
return;
}else if(){
//more work to do
}
}
到目前为止,我已经尝试过但失败了:
@Test
public void testSomeTask(){
when(mock.somecondition()).thenReturn(true);
mock.someTask();
verifyNoMoreInteractions(mock); //fails
verifyZeroInteractions(mock); //fails this calls the above method anyway
}
更新:条件和被测方法属于同一个类。我正在监视该课程而不是嘲笑,但结果是一样的。我得到的错误是 这里不需要交互,指向我的 verifyNoMoreInteractions 行。 但是在mock上发现了这个交互,指向了上面的调用。我将更改参数并强制它指向我的行并稍后提供更新。我想我知道我的测试出了什么问题。
解决方案: 验证方法调用和将作为被测方法参数的结果调用的所有其他调用,并验证条件本身。然后在最后验证NomoreINteractions。不幸的是,没有办法验证返回的结果是什么都没有被调用;此版本的 Mockito 的声明。拥有类似 verifyNothingIsDone 这样的工具会很方便,就像 doNothing().when(.....);
【问题讨论】:
标签: android junit mockito powermockito