java - assertEquals 与 assertTrue 的布尔值
问题描述
您可以测试对象assertEquals(a,b)
和assertTrue(a.equals(b))
或assertTrue(a==b)
(对于原语)。在这种情况下,当然assertEquals(a,b)
是唯一可能的变体。在测试错误的情况下它是空安全的并且提供更多信息(你得到的确切错误不是真或假)。
我有一个下一个问题。
当我们只有布尔值要测试时,情况会怎样?
assertEquals(true, a)
和assertTrue(a)
有什么区别?
当我们检查布尔值时,我看到了这种情况。使用 assertTrue(a) 不是空安全的。这是非常重要的原因。如果是布尔值,则看不到区别。
解决方案
assertEquals(a, b)
和assertTrue(a.equals(b))
不一样,因为如果两者都为null,前者将返回true,而后者将抛出空指针异常。
惯用的写作方式assertTrue(a == b)
是assertSame(a, b)
, ifa
和b
are references。对于基元,使用assertEquals
.
assertEquals(true, a)
并且assertTrue(a)
在语义上是相同的。这只是风格问题。许多人会认为前者是不好的风格,就像现在一样。
if (isActive() == true) {
doThing()
}
推荐阅读
- python - 我的代码可以归类为深度优先搜索吗?
- javascript - 将字符串拆分为 3 段
- android - React Native Android 项目在 Hermes 上失败,但“enableHermes:false”
- mysql - 有没有办法对命令进行逆向工程以创建数据库模式?
- r - 线性回归:将完整模型中的 R2 与 k 折交叉验证下的 R2 进行比较
- python - Python列表扩展获取TypeError
- python - 从 jupyter notebook 内部更新 seaborn
- python - 自定义选项卡中的 Django 管理员 StackedInline
- python - 具有多个标题的文件到带有融化的数据框
- vba - Access VBA 在两个数据库之间传输数据