繁体   English   中英

Java - 在 JUnit 测试中不实施 equals 方法的对象的深度比较

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

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

在我的示例中,我有两个来自XML 架构的两个不同版本的对象,它们仅在版本上有所不同,在我的测试中,我想证明推土机映射的结果等于原始的. 自动生成的类不实现 equals 方法

my.new.schema.Element new = mapper.map(old, my.new.schema.Element.class);

assertEquals(old, new); //obviously doesn't work

最简单的方法是使用 AssertJ 的递归比较 function:

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM