我创建了一个类并重写了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)因为它不知道更好.