java - Mockito 和 Assertions - 两个相同的 BigDecimals...不相等

标签 java assert bigdecimal

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

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

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

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

BigDecimal expected = MathHelper.getDecimal(10);

getDecimal MathHelper中的方法看起来像这样:

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

actualprivate 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 不相等,断言错误是正确的。

关于java - Mockito 和 Assertions - 两个相同的 BigDecimals...不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33456540/

相关文章:

java - 如何使用 java 和 DOM Parser 根据属性从 xml 中删除节点

javascript - 如何在 CasperJS 断言失败时继续测试用例?

java - 我们可以使用 double 存储货币字段并使用 BigDecimal 进行算术运算吗?

java - 从 2 字节转换整数

java - 使用开放式办公室 API 生成报告时出现 BootstrapException

java - 断言两个 java bean 是等价的

objective-c - NSAssert 不起作用

java - 十六进制 -> float 转换不准确

java - BigDecimal 除法具有大量小数位

java - Spring数据绑定(bind)(@modelattribute)优雅地处理解析异常