Mockito和断言-两个相同的BigDecimal..不相等



我在Assertion方面有一个小问题,或者可能只是在BigDecimal方面。

我的JUnit测试在使用assertEquals(Object expected, Object actual):时抛出错误

java.lang.AssertionError: expected:<10> but was:<10.000000000>

预期是通过以下方式创建的:

BigDecimal expected = MathHelper.getDecimal(10);

MathHelper中的getDecimal方法如下所示:

public static final BigDecimal getDecimal(long value) {
    return BigDecimal.valueOf(value);
}

actualprivate BigDecimal count,它的getter方法是经典的getter:

public BigDecimal getCount() {
    return count;
}

我完全不知道这里发生了什么。。。

查看BigDecimal:的equals方法的文档

将此BigDecimal与指定的Object进行相等性比较。与compareTo不同,此方法仅当两个BigDecimal对象的值和比例相等时才认为它们相等(因此,用此方法进行比较时,2.0不等于2.00)。

所以不,1010.000000000不是相等的,断言错误是正确的。

BigDecimal equals方法考虑了数字的小数位数,所以BigDecimals 12.0和12.00是不同的。您应该使用BigdecimalcompareTo方法。

最新更新