java - Java - 在 JUnit 测试中不实现 equals 方法的对象的深度比较
问题描述
如何在测试中根据它们的字段值“深入”比较两个未实现 equals 方法的对象?
在我的示例中,我有两个来自XML Schema 的两个不同版本的对象,它们仅在版本上有所不同,在我的测试中,我想证明推土机映射的结果等于原始的. 自动生成的类不实现 equals 方法。
my.new.schema.Element new = mapper.map(old, my.new.schema.Element.class);
assertEquals(old, new); //obviously doesn't work
解决方案
最简单的方法是使用 AssertJ 的递归比较函数:
assertThat(new).usingRecursiveComparison().isEqualTo(old);
有关详细信息,请参阅 AssertJ 文档:https ://assertj.github.io/doc/#basic-usage
使用 AssertJ 的先决条件:
进口:
import static org.assertj.core.api.Assertions.*;
maven依赖:
<!-- test -->
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.19.0</version>
<scope>test</scope>
</dependency>
推荐阅读
- azure - 如何在 Azure 服务结构的同一端口上托管多个 Web API 服务
- c++ - 类方法接受表示各种数量参数的函数的 lambda
- node.js - 运行 lerna bootstrap -- 在 Windows 上提升命令时不允许操作错误 npm
- python - 如何简单地将 mhtml 文件转换为 html 文件
- c++ - C ++如何使用指向向量指针的指针
- r - 使用 glmnet 为给定数量的预测变量找到优化模型
- c# - 如何检查用户输入是否已存在于c#中的文本文件中
- php - 在 XAMPP 中设置 PHP 内存限制
- ssl - sslsplit:收到 privsep req type 02
- javascript - 满足条件时运行函数?