gpt4 book ai didi

java - 比较几乎所有字段都相同的对象

转载 作者:行者123 更新时间:2023-12-01 19:57:03 24 4
gpt4 key购买 nike

在单元测试中我通常使用类似的东西

assertThat(someObject).isEqualTo(someOtherObject);

确保这两个对象具有相同的内容。但是,如果对象具有相同的内容(除了某些字段之外),该怎么办?

通常情况下是这样的:

assertThat(someObject.getFirstField()).isNotEqualTo(someOtherObject.getFirstField());
assertThat(someObject.getLastField()).isNotEqualTo(someOtherObject.getLastFieldd());
// and then gazilion fields that should be equal
assertThat(someObject.getNthField()).isEqualTo(someOtherObject.getNthField());
// ...

出于显而易见的原因,对于具有很多字段的较大类来说,它非常笨重。有没有办法指定您期望某些字段不相等,但其余字段相等?

someObject 和 someOtherObject 都是 Lomboked 的同一个类,因此 equals() 会自动处理。

最佳答案

如果您愿意使用 assertJ那么有一个非常简单的解决方案可以解决您的问题。使用

assertThat(someObject).isEqualToIgnoringGivenFields(someObjectOther, "firstField", "lastField")

请记住,这在内部使用反射,如果您更改要忽略的类中的字段名称,则可能会发生失败。

更多相关信息Field by field comparisons

关于java - 比较几乎所有字段都相同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49301832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com