当我试图通过传递强制转换的值来模拟重载的方法时,我得到了以下错误。
例如,为了模拟abcclass.logwarn(记录器日志、字符串、字符串描述、可抛e);
我正在做
`ABCClass.logWarn(null,WarningString, description, (Throwable)null);
...\\ The rest of the methods are standard...
verify(event).setStatus((Throwable)null);//**Line 76**
但是当我运行测试用例时,我会得到以下错误
ABCClassTest.testLogWarn:76
Wanted but not invoked:
MockEvent.setStatus(null);
-> at com.path.ABCClassTest.testLogWarn(ABCClassTest.java:76)
However, there were other interactions with this mock:.....
为什么要调用setstatus(null)
,甚至在专门调用了setstatus((Throwable)null);
之后?
附加详细信息
logWarn的定义
private static void logWarn(String eventType, String eventName, String errMsg, Throwable e) {
AnEvent event = AnEventFactory.create(eventType);
event.setName(eventName);
if(e!=null)
event.setStatus(e);//so this is never called if the throwable is null.
//How do I modify the verify behavior?
/*
Bleh */
event.completed();
}
强制转换不会更改变量引用的对象。它只是让编译器在你以与其类型不匹配的方式使用变量时不会抱怨。因此,您实际上是在verify
之后将null
传递到setstatus
中。
当然,如果您想知道为什么setstatus
实际上没有被您测试的代码调用,那么您需要在任何人告诉您之前发布它。
MyDriveRepository.getMyDriveItemSelectedPathuri一直返回null。我试着查看以下链接,但没有找到解决问题的方法。
我被通缉了,但没有被征召。方法在行处与此模拟错误没有任何交互。甚至我也嘲弄了这个对象&在调试函数时被调用。 下面是我要测试的函数,
更新下面是异常消息: 更新2用真实实例替换mocked WithDefinitions对象后,我得到以下输出:
我实际上是在努力做下面的事情:我的服务类 这让我想要的没有被调用,实际上与这个模拟没有任何交互。你知道我做错了什么吗??
我尝试了例外情况下给出的解决方案:mockito想要但没有调用,实际上与这个mock没有任何交互,而这个mockito也想要但没有调用:实际上,与这个mock没有任何交互但仍然得到相同的错误。我是不是漏掉了什么?以下是me的实现:-