JUnit assertEquals()对两个对象失败

Ter*_* Li 22 junit equals

我创建了一个类并重写了equals()方法.当我使用时assertTrue(obj1.equals(obj2)),它将通过测试; 但是,assertEquals(obj1, obj2)测试将失败.有人可以告诉原因吗?

Jon*_*eet 31

我的猜测是你实际上没有覆盖equals- 你已经超载了它.使用@Override注释在编译时找到这种东西.

换句话说,我怀疑你有:

public boolean equals(MyClass other)
Run Code Online (Sandbox Code Playgroud)

你应该在哪里:

@Override // Force the compiler to check I'm really overriding something
public boolean equals(Object other)
Run Code Online (Sandbox Code Playgroud)

在你的工作断言中,你毫无疑问地将重载方法称为编译时类型,obj1并且obj2都是MyClass(或者你的类被调用).JUnit assertEquals只会打电话,equals(Object)因为它不知道更好.