如何从自定义Mockito ArgumentMatcher生成自定义消息?

时间:2011-02-19 15:51:07

标签: mocking mockito

我正在写一个ArgumentMatcher,比较的内容归结为:

return A.value().equals(B.value()) && A.name().equals(B.name());

不幸的是,当没有通过时,Mockito告诉我它失败了。我想添加一个自定义消息,如“值不匹配”或“名称不匹配”(当然我想提供更多信息,但直到我能弄清楚这个简单的情况,有什么意义任何进一步的。)

以前(在使用Mockito之前),我记得有两个方法的匹配器 - 一个用于检查匹配,另一个用于生成失败消息(true,写两种方法都很痛苦,但我现在想念第二种方法)

知道怎么做吗?任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:4)

我现在明白了。 Hamcrest提供了一个" describeTo"方法。这相当于我记得EasyMock的方法。您只需将错误条件添加到Description对象,并且中提琴,您有更好的失败消息。

答案 1 :(得分:2)

提供自定义消息的一般方法是Mockito.description()方法:

verify(writer, never().description("exception was thrown"))
  .println(any(Object.class));

答案 2 :(得分:0)

如果要实现org.mockito.ArgumentMatcher接口,则测试将调用其toString()方法来创建比较消息的“ Wanted”侧。通过仅在用于初始化toString()的预期对象上返回ArgumentMatcher方法的值来实现此方法,可能会给您有用的消息。