2

当我尝试通过传递强制转换的值来模拟重载方法时,出现以下错误。

例如为了模拟 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();
    }
4

2 回答 2

1

强制转换不会更改变量引用的对象。当您以与其类型不匹配的方式使用变量时,它只会使编译器不会抱怨。所以你真的正在null关注setStatus你的verify.

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

于 2013-08-13T20:47:16.650 回答
-1

作为 Mockito 的新手,我并没有完全意识到我在寻找什么。但这正是我想要的。希望这可以帮助其他遇到类似问题的人。

于 2013-08-13T21:38:43.093 回答