微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java - 在 JUnit 测试中没有实现 equals 方法的对象的深度比较

如何解决Java - 在 JUnit 测试中没有实现 equals 方法的对象的深度比较

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。