gpt4 book ai didi

java - 如何使用reflectionEquals检查2个对象中的所有字段是否相等?

转载 作者:行者123 更新时间:2023-12-01 17:59:01 26 4
gpt4 key购买 nike

我正在编写一个 JUnit 测试,我想测试 2 个对象中的所有字段是否相等。

我尝试过以下方法:

    @Test
public void testPersonObjectsAreEqual(){

Person expectedPerson = new Person("100100", "sampleName", "sampleAddress");
Person actualPersonReturned = repository.getPersonById("100100");

Assert.assertTrue(EqualsBuilder.reflectionEquals(expectedPerson, actualPersonReturned));
}

但是测试失败,即使两个对象中的字段相同。

它们都有: 100100sampleNamesampleAddress

最佳答案

在您的示例中,您需要重写 Person 类中的 equals 方法(如果 Person 对象的属性全部相等,则返回 true)。例如:

public class Person {

private String name;
private String surname;

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (surname == null) {
if (other.surname != null)
return false;
} else if (!surname.equals(other.surname))
return false;
return true;
}

}

您可以使用 IDE 自动完成此操作,前面的代码片段是使用 Eclipse 自动生成的。

关于java - 如何使用reflectionEquals检查2个对象中的所有字段是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42389661/

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