sh-*_*-cs 2 java testing equality kotlin assertj
AssertJ的assertThat(...).isEqualTo()
方法比较.equals()
默认使用。这通常是正确的选择,但有时您确实想通过精确的对象标识/引用标识进行比较(==
Java 中的“双等于”,Kotlin 中的“三等于” ===
)。
是否有一种惯用的方法来强制 AssertJ 进行这种比较,例如我不知道的断言方法?
我能做的最好的事情就是通过在没有 AssertJ 的情况下进行比较来解决这个问题,然后仅使用它来检查生成的布尔值:
科特林:
assertThat(obj1 === obj2).isTrue()
Run Code Online (Sandbox Code Playgroud)
爪哇:
assertThat(obj1 == obj2).isTrue();
Run Code Online (Sandbox Code Playgroud)
正如我已经暗示的那样,这并不理想,因为 a) 与其他断言相比,它看起来不一致,b) 当断言失败时产生的错误消息只是说“预期为真,结果为假”,这并不像显示的那么好所讨论的不同对象(即使它们仅在内存位置上有所不同,而不是其内容不同)。
AssertJ 惯用的参考比较方式是通过isSameAs
and isNotSameAs
:
assertThat(obj1).isSameAs(obj2);
Run Code Online (Sandbox Code Playgroud)
assertThat(obj1).isNotSameAs(obj2);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
150 次 |
最近记录: |