根据文件
所以我希望如果我有一个像下面这样的类(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
成功。