我有一个代码,用于以下
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);
Run Code Online (Sandbox Code Playgroud)
产量
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
Run Code Online (Sandbox Code Playgroud)
是不是assertEquals假设按值进行比较?它在我看来它比较对象地址.但也许我错了?...
谢谢!
是不是assertEquals假设按值进行比较?
不,它应该使用该equals方法进行比较.
你需要重写equals的MyClass(并重写hashCode相应).
它在我看来它比较对象地址.
不,这只是调用的结果toString()上MyClass,而您不必重写它.如果你想要显示更有意义的东西,toString()也可以覆盖.
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |