代码之家  ›  专栏  ›  技术社区  ›  dushkin

JUnit AssertEquals失败

  •  0
  • dushkin  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  7
  •   Andy Turner    7 年前

    assertEquals不应该按值比较吗??

    不,应该用 equals 方法。

    等于 MyClass (和覆盖) hashCode 相应地)。

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

    不,那只是调用 toString() ,而不是重写它。如果您想显示更有意义的内容,请重写 toString()