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).
所以不,10
和10.000000000
不相等,断言错误是正确的。
BigDecimal equals 方法考虑了数字的小数位数,因此BigDecimals 12.0 和12.00 是不同的。您应该使用 Bigdecimal compareTo 方法。
我对断言有一个小问题,或者可能只是对 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 twoBigDecimal
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).
所以不,10
和10.000000000
不相等,断言错误是正确的。
BigDecimal equals 方法考虑了数字的小数位数,因此BigDecimals 12.0 和12.00 是不同的。您应该使用 Bigdecimal compareTo 方法。