配置mockito以在验证错误消息中打印实际参数值

时间:2012-01-19 22:55:36

标签: java logging mockito

在描述验证失败时,默认情况下,Mockito仅打印发生交互的呼叫站点。像这样:

    Wanted but not invoked:
    proxyListener.foundTemplateParam(
        "fooBar2",
        isNull(),
        isNull()
    );
    -> at        foo.ProxyHandlerTest.testThatImplicitParamsScannedCorrectly(ProxyHandlerTest.java:136)

    However, there were other interactions with this mock:
    -> at foo.ProxyHandler.<init>(ProxyHandler.java:99)
    -> at foo.ProxyHandler.<init>        (ProxyHandler.java:100)
    -> at foo.ProxyHandler.scanForParamSetters(ProxyHandler.java:222)
    -> at foo.ProxyHandler.<init>(ProxyHandler.java:102)
    -> at foo.ProxyHandler.<init>(ProxyHandler.java:104)

这是有用的信息,但我也希望看到在这些互动过程中传递的参数。有没有办法实现这个目标?

P上。 S.我知道用withSettings().verboseLogging()嘲笑。但它太冗长并打印到stdout而不是将此信息添加到断言错误消息。

更新: Mockito 1.9.0不支持开箱即用的异常错误消息的自定义(我刚检查了它们的来源)。

1 个答案:

答案 0 :(得分:0)

最安全的地方是打印参数并返回给定值的答案。

然后您可以编写如下内容:

given(some.callWith(arg1, arg2)).will(printArgsAndReturn("some value"));

其中printArgsAndReturn("some value")实际上会返回您的自定义答案。