根据文件

所以我希望如果我有一个像下面这样的类(class)

class SomeClass {}
然后
SomeClass someClass1= new SomeClass();
SomeClass someClass2= new SomeClass();
assertSame(someClass1,someClass2); // fail
assertEquals(someClass1,someClass2); // fail
assertEquals应该通过而assertSame应该失败,因为两个类的值相等,但是它们具有不同的引用位置。
当我在两种情况下都失败时,我的问题是两者之间有什么区别?

最佳答案

由于您没有在类中重写equals,因此assertEquals的行为与assertSame相同,因为默认的equals实现比较引用。

150    public boolean equals(Object obj) {
151        return (this == obj);
152    }

如果您提供等于的愚蠢替代:
class SomeClass {
    @Override
    public boolean equals(Object o) {
        return true;
    }
}

您会看到assertEquals成功。

10-08 19:17