Java - 在不实现 JUnit 测试中的 equals 方法的情况下深入比较对象

Java - Deep comparison of objects without implementing the equals method in JUnit Tests

如何“深入”——在测试中根据字段值比较两个没有实现equals方法的对象?

在我的示例中,我有 两个对象 来自 两个不同版本的 XML 架构 ,仅版本不同,在我的测试中,我想证明 dozer-mapped 结果等于原始 。 自动生成的 类 没有实现 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>