Mockito错误:“通缉但未调用:..然而,还有其他与此模拟的交互”

时间:2013-08-13 19:14:08

标签: java unit-testing testing mockito powermock

当我尝试通过传递已转换的值来模拟重载方法时,我得到以下错误。

例如为了模仿 ABCClass.logWarn(Logger log,String , String description, Throwable 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();
    }

2 个答案:

答案 0 :(得分:1)

转换不会更改变量引用的对象。当您以与其类型不匹配的方式使用变量时,它只会使编译器不会抱怨。因此,您确实在null之后将setStatus传递到verify

当然,如果你问为什么setStatus实际上没有被你正在测试的代码调用,你需要在任何人告诉你之前发布它。

答案 1 :(得分:-1)

对Mockito不熟悉我并没有完全意识到我在寻找什么。但this正是我想要的。 希望这有助于其他人遇到类似的问题。