首页 > 解决方案 > assertEquals 与 assertTrue 的布尔值

问题描述

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

我有一个下一个问题。

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

assertEquals(true, a)assertTrue(a)

有什么区别?

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

标签: javatestingjunitassertassertion

解决方案


assertEquals(a, b)assertTrue(a.equals(b))不一样,因为如果两者都为null,前者将返回true,而后者将抛出空指针异常。

惯用的写作方式assertTrue(a == b)assertSame(a, b), ifabare references。对于基元,使用assertEquals.

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

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

推荐阅读