我有以下代码
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是否应该按值比较? 在我看来,它比较对象地址。 但是也许我错了?...
谢谢!
答案 0 :(得分:7)
assertEquals是否等于按值比较?
否,应该使用equals
方法进行比较。
您需要覆盖equals
中的MyClass
(并相应覆盖hashCode
)。
在我看来,它比较对象地址。
否,那仅仅是在toString()
上调用MyClass
的结果,而没有覆盖它。如果您希望显示更有意义的内容,也可以覆盖toString()
。