java - 强制 AssertJ 按身份进行比较的惯用方法?

标签 java kotlin testing equality assertj

AssertJ 的 assertThat(...).isEqualTo() 方法默认使用 .equals() 进行比较。这通常是正确的选择,但有时您确实想通过精确的对象标识/引用标识进行比较(Java 中的“双等于”==,“三重等于”=== 在 Kotlin 中)。

是否有一种惯用的方法来强制 AssertJ 进行这种比较,例如我不知道的断言方法?

我能做的最好的事情就是通过在没有 AssertJ 的情况下进行比较来解决这个问题,然后仅使用它来检查生成的 boolean 值:

Kotlin :

assertThat(obj1 === obj2).isTrue()

Java:

assertThat(obj1 == obj2).isTrue();

正如我已经暗示的那样,这并不理想,因为 a) 与其他断言相比,它看起来不一致,b) 当断言失败时产生的错误消息只是说“预期为真,结果为假”,这并不像很好地显示了所讨论的不同对象(即使它们仅在内存位置上有所不同,而不是其内容不同)。

最佳答案

AssertJ 惯用的引用比较方式是通过 isSameAsisNotSameAs :

assertThat(obj1).isSameAs(obj2);
assertThat(obj1).isNotSameAs(obj2);

关于java - 强制 AssertJ 按身份进行比较的惯用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76638706/

相关文章:

java - 通过蓝牙在android 2.3中共享文件

java - 为什么我不断收到 Java.Lang.NullPointerException

java - 如何解决Word文档中的包应包含内容类型部分[M1.13]

android - 在 Kotlin 中支持 Lollipop

c# - 从 Selenium C# 中的两个类调用方法

java - JWT 无法将访问 token 转换为 JSON

Kotlin:为什么使用抽象类(与接口(interface)相比)?

android - 使用 setOnClickListener 并获取“Potential NullPointerException。某些布局版本中缺少资源”

c# - 如何防止 AutoFixture 的 GuardClauseAssertion 检查继承类中的构造函数?

unit-testing - 在运行完所有测试之后,是否可以执行拆解功能?