我创建了一个值对象 MarketVO
并且这个值对象的两个实例具有相同的元素和每个元素的相同值。
我的值对象类是:
public class MarketVO {
private double floatAmt;
private Date marketDate;
private long marketCap;
}
以下是值:
返回数据:
FloatAmt: 247657.5418618201, MarketCap: 5249164,
MarketDate: 2011-07-29 00:00:00.0
预期数据:
FloatAmt: 247657.5418618201, MarketCap: 5249164,
MarketDate: 2011-07-29 00:00:00.0
现在在我的单元测试类中,我想断言我的返回类型和预期类型相同,包含相同顺序的相同值,所以我正在做类似的事情
assertTrue(returnedData.equals(expectedData))
,现在返回 false
值(value),但如果我这样做assertEquals(testObject.getfloatAmt(), testObject2.getfloatAmt());
assertEquals(testObject.getmarketCap(), testObject2.getmarketCap());
assertEquals(testObject.getmarketDate(), testObject2.getmarketDate());
这个测试通过了,所以我不确定为什么
.equals
方法在这里不起作用?有什么建议?更新:我想在这里强调,我们正在使用它来做 单元测试 .
最佳答案
.equals
的默认实现比较对象引用,而不是对象内容。
您可能想要覆盖 equals(和 hashCode)方法。像这样的东西:
public class MarketVO {
private double floatAmt;
private Date marketDate;
private long marketCap;
@Override
public boolean equals(Object o) {
if (!(o instanceof MarketVO))
return false;
MarketVO other = (MarketVO) o;
return other.floatAmt == floatAmt &&
other.marketDate.equals(marketDate) &&
other.marketCap == marketCap;
}
@Override
public int hashCode() {
...
}
}
关于java - 为什么 .equals 方法在两个相同的值对象上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6877947/