我有一个要为其编写JUnit测试的类。我正在尝试测试是否从未调用过特定方法。
np.fromiter
测试类为:
public class CountryProcess extends AbstractCountryProcess {
private static final Logger log = LoggerFactory.getLogger(CountryProcessor.class);
private static final Long MAX_FILE = 20l;
@Override
protected boolean processCountry(Region region, City city) {
Long maxFile = region.getRequiredLongValue(SIZE);
if (maxFile < MAX_FILE) {
cntDao.addCountryLandMark(city);
}
else {
log.warn("File size was big");
}
return true;
}
但这会返回以下错误:
org.mockito.exceptions.misusing.NotAMockException:
传递给verify()的参数是$ Proxy4类型的,不是模拟的!
确保正确放置括号!
查看正确验证的示例:
verify(mock).someMethod();
verify(mock,times(10))。someMethod();
verify(mock,atLeastOnce())。someMethod();
任何想法都可以在当前情况下解决。请举一个使用当前代码的示例,这样我会有一个更好的主意?
答案 0 :(得分:2)
您正在混合两个模拟框架:
JUnitRuleMockery
verify
方法很显然,它们彼此不兼容。
您的验证调用看起来还不错,我相信它会在收到使用Mockito创建的模拟文件后立即运行(使用Mockito.mock(CntDao.class)
)
作为never
的替代方法,您可以使用Mockito.verifyNoMoreInteractions
或Mockito.verifyZeroInteractions
,但是它们的含义不太明确。