【问题标题】:assertEquals Vs assertTrue for booleanassertEquals 与 assertTrue 的布尔值
【发布时间】:2020-05-29 05:12:10
【问题描述】:

您可以测试对象assertEquals(a,b)assertTrue(a.equals(b))assertTrue(a==b)(对于原语)。在这种情况下,assertEquals(a,b) 当然是唯一可能的变体。在测试错误的情况下,它是空安全的并且提供更多信息(您得到的确切错误不是真或假)。

我还有一个问题。

如果我们只有布尔值要测试,情况会怎样?

assertEquals(true, a)assertTrue(a)

有什么区别?

当我们检查布尔值时,我看到了这种情况。使用 assertTrue(a) 不是空安全的。这是非常重要的原因。如果是布尔值,则看不出区别。

【问题讨论】:

  • assertEquals 在失败时也会显示预期值和错误值。这实际上就是它存在的原因。与 java assert ...; 比较

标签: java testing junit assert assertion


【解决方案1】:

assertEquals(a, b)assertTrue(a.equals(b))是不一样的,前者会在两者都为null时返回true,而后者会抛出空指针异常。

如果ab 是引用,则写assertTrue(a == b) 的惯用方式是assertSame(a, b)。对于原语,请使用assertEquals

assertEquals(true, a)assertTrue(a) 在语义上是相同的。这只是风格问题。许多人会认为前者是不好的风格,就像现在一样。

if (isActive() == true) {
    doThing()
}

【讨论】:

    猜你喜欢
    • 2017-04-08
    • 2011-04-13
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多