我有一个用于以下内容的代码
import static org.junit.Assert.assertEquals;
System.out.println("obj1 name = " + obj1.getName());
System.out.println("obj1 value = " + (obj1.getvalue() == null ? "null" : "not null"));
System.out.println("obj2 name = " + obj2.getName());
System.out.println("obj2 value = " + (obj2.getvalue() == null ? "null" : "not null"));
assertEquals(obj2, obj1);
产量
obj1 name = DC2
obj1 value = null
obj2 name = DC2
obj2 value = null
java.lang.AssertionError:
Expected :com.gms.contract.myClass.inventory.MyClass@795ce9b5
Actual :com.gms.contract.myClass.inventory.MyClass@280cb0b4
assertEquals 不是应该按值比较吗? 在我看来,它比较对象地址。 但也许我错了?...
最佳答案
Isn't assertEquals suppose to compare by value??
不,它应该使用 equals
方法进行比较。
您需要重写MyClass
中的equals
(并相应地重写hashCode
)。
It looks to me that it compares objects address.
不,这只是在 MyClass
上调用 toString()
的结果,而您没有覆盖它。如果您希望显示更有意义的内容,也可以重写 toString()
。
关于java - JUnit AssertEquals 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52607509/