【问题标题】:JUnit AssertEquals failsJUnit AssertEquals 失败
【发布时间】:2019-03-07 12:45:04
【问题描述】:

我有以下代码

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

【问题讨论】:

  • 您需要在MyClass 中覆盖equals

标签: java junit junit4


【解决方案1】:

assertEquals 不应该按值比较吗?

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

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

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

不,这只是在 MyClass 上调用 toString() 的结果,而您没有覆盖它。如果您想显示更有意义的内容,也请覆盖 toString()

【讨论】:

    猜你喜欢
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多