JUnit AssertEquals失败

时间:2018-10-02 11:30:52

标签: java junit junit4

我有以下代码

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是否应该按值比较? 在我看来,它比较对象地址。 但是也许我错了?...

谢谢!

1 个答案:

答案 0 :(得分:7)

  

assertEquals是否等于按值比较?

否,应该使用equals方法进行比较。

您需要覆盖equals中的MyClass(并相应覆盖hashCode)。

  

在我看来,它比较对象地址。

否,那仅仅是在toString()上调用MyClass的结果,而没有覆盖它。如果您希望显示更有意义的内容,也可以覆盖toString()