根据文件
assertEquals() 断言两个对象相等。
assertSame() 断言两个对象引用同一个对象。
所以我期待如果我有像下面这样的课程
class SomeClass {}
then
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 }
如果你提供了一个愚蠢的 equals 重写:
class SomeClass {
@Override
public boolean equals(Object o) {
return true;
}
}
你会看到的assertEquals
成功了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)