【问题标题】:Junit ExpectedException fail with explanatory messageJunit ExpectedException 失败并显示解释性消息
【发布时间】:2013-11-27 19:56:58
【问题描述】:

在一个 junit 类中,我想测试是否引发了异常,如果没有,提供一条解释性消息,建议在测试失败时要查找的内容。所以,类似...

    thrown.expect(UnsupportedOperationException.class);
    thrown.expectMessage("an exception message");
    thrown.failureMessage("This method should not be called directly. Be sure to use a subclass or mock that implements the method foo()");

显然,没有failureMessage()这样的方法。我不可能是世界上唯一一个想要实现失败消息的人。我在搜索的任何地方都没有找到示例。

请注意,这是参考 Junit4 @Rule 和 ExpectedException 功能。

【问题讨论】:

    标签: java junit expected-exception


    【解决方案1】:

    JUnit 4.12 支持自定义失败消息(请参阅release notes)。如果您的测试没有抛出预期的异常,则使用此失败消息。 Hamcrest 匹配器会处理其他所有问题,例如错误消息。

    JUnit 4.12 于 2014 年 12 月 4 日发布。

    【讨论】:

      【解决方案2】:

      您可以使用自定义 Matcher,子类化 BaseMatcher 覆盖 toString() 来做您想做的事。

      【讨论】:

      • 谢谢,凯文。我想我将不得不深入编写自己的自定义匹配器。我希望避免这种情况。几天之内我不会将此标记为正确答案,以确保其他人不会提出不同的解决方案。
      猜你喜欢
      • 2011-07-02
      • 2017-08-19
      • 2017-08-12
      • 2016-12-05
      • 1970-01-01
      • 2021-12-22
      • 2017-07-31
      • 2017-09-22
      • 2014-04-23
      相关资源
      最近更新 更多