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

Mockito and Assertions - two same BigDecimals... not equal

我对断言有一个小问题,或者可能只是对 BigDecimal。

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

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

expected 是通过以下方式创建的:

BigDecimal expected = MathHelper.getDecimal(10);

MathHelper 中的 getDecimal 方法如下所示:

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

actual是一个private BigDecimal count,它的getter方法是经典getter:

public BigDecimal getCount() {
    return count;
}

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

看看documentation of the equals method for BigDecimal:

Compares this BigDecimal with the specified Object for equality. Unlike compareTo, this method considers two BigDecimal objects equal only if they are equal in value and scale (thus 2.0 is not equal to 2.00 when compared by this method).

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

BigDecimal equals 方法考虑了数字的小数位数,因此BigDecimals 12.0 和12.00 是不同的。您应该使用 Bigdecimal compareTo 方法。