提问人:sh-at-cs 提问时间:7/8/2023 更新时间:7/10/2023 访问量:85
强制 AssertJ 按身份进行比较的惯用方法?
Idiomatic way to force AssertJ to compare by identity?
问:
默认情况下,AssertJ 的方法比较使用。这通常是正确的选择,但有时您确实希望通过精确的对象标识/引用标识进行比较(Java 中的“双等号”,Kotlin 中的“三等号”)。assertThat(...).isEqualTo()
.equals()
==
===
有没有一种惯用的方法来强制 AssertJ 进行这种比较,例如我不知道的断言方法?
我能做的最好的事情就是通过在没有 AssertJ 的情况下进行比较来解决它,然后仅使用它来检查生成的布尔值:
科特林:
assertThat(obj1 === obj2).isTrue()
爪哇岛:
assertThat(obj1 == obj2).isTrue();
正如我已经暗示的那样,这并不理想,因为 a) 与其他断言相比,它看起来不一致,b) 断言失败时产生的错误消息只是说“预期为真,为假”,这不如显示有问题的不同对象(即使它们只是它们的内存位置不同,而不是它们的内容)。
答:
5赞
Ken Chan
7/8/2023
#1
引用比较的 AssertJ 惯用方法是通过 isSameAs 和
isNotSameAs
:
assertThat(obj1).isSameAs(obj2);
assertThat(obj1).isNotSameAs(obj2);
评论