使用JUnit assertEquals的自定义异常消息?

时间:2013-05-13 14:37:04

标签: java testing junit customization

我正在使用assert equals来比较两个数字

Assert.assertEquals("My error message", First , Second);

然后,当我生成测试报告时,我得到了

  

“我的错误消息预期(第一个) (第二个)”

如何自定义我用斜体显示的部分?和数字的格式?

3 个答案:

答案 0 :(得分:8)

您可以使用以下内容:

int a=1, b=2;
String str = "Failure: I was expecting %d to be equal to %d";
assertTrue(String.format(str, a, b), a == b);

答案 1 :(得分:5)

该消息在Assert类中进行了硬编码。您必须编写自己的代码才能生成自定义消息:

if (!first.equals(second)) {
  throw new AssertionFailedError(
      String.format("bespoke message here", first, second));
}

(注意:以上是一个粗略的例子 - 您需要检查空值等。请参阅Assert.java的代码以了解它是如何完成的。

答案 2 :(得分:0)

感谢您的回答,我在Assert课程中找到了这个

        static String format(String message, Object expected, Object actual) {
    String formatted= "";
    if (message != null && !message.equals(""))
        formatted= message + " ";
    String expectedString= String.valueOf(expected);
    String actualString= String.valueOf(actual);
    if (expectedString.equals(actualString))
        return formatted + "expected: "
                + formatClassAndValue(expected, expectedString)
                + " but was: " + formatClassAndValue(actual, actualString);
    else
        return formatted + "expected:<" + expectedString + "> but was:<"
                + actualString + ">";
}

我想我不能修改Junit Assert类,但是我可以在我的项目中创建一个具有相同名称的新类,只是改变格式,我是对的吗?或者我可以在我的课程中更改格式,它会影响抛出的异常?