gpt4 book ai didi

java - 为什么 junit ComparisonFailure 没有被 assertEquals(Object, Object) 使用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:46 24 4
gpt4 key购买 nike

在 Junit 4 中,当 assertEquals(Object, Object) 失败时,您是否发现抛出 ComparisonFailure 而不是 AssertionError 有任何缺点?

assertEquals(Object, Object) 抛出

  • 一个 ComparisonFailure 如果预期和实际都是字符串
  • 一个 AssertionError 如果其中一个不是字符串

AssertionError 消息已经是这种形式

"expected:<"+ expected.toString() +"> but was <"+ actual.toString()

(通过 String.valueOf,参见下面由 Assert.assertEquals(Object, Object) 调用的 junit-4.8.2 方法来构建 AssertionError 消息):

static String format(Object expected, Object actual) {
...
String expectedString= String.valueOf(expected);
String actualString= String.valueOf(actual);
...
return formatted+"expected:<"+ expectedString +"> but was:<"+ actualString +">";

ComparisonFailure 提供更具可读性的方式来发现 eclipse 或 Intellij IDEA 对话框中的差异(FEST-Assert 抛出这个异常)

[更新:编辑问题以关注 ComparisonFailure/AssertionError 讨论。]

最佳答案

我们从比较字符串开始,因为很明显如何使错误消息更有用。我们从未将 ComparisonFailure 扩展到一般对象,因为不清楚如何以一般方式这样做。正如其他人所建议的那样,如果您可以提供更好的错误消息或迁移到 Hamcrest,欢迎您添加特殊断言,Hamcrest 提供了一种用于添加有用的失败消息的通用机制。

问候,

肯特

关于java - 为什么 junit ComparisonFailure 没有被 assertEquals(Object, Object) 使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4571052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com