【问题标题】:Mockito and Assertions - two same BigDecimals... not equal [duplicate]Mockito 和 Assertions - 两个相同的 BigDecimals ......不相等 [重复]
【发布时间】:2015-10-31 20:55:59
【问题描述】:

我对 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;
}

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

【问题讨论】:

    标签: java assert bigdecimal


    【解决方案1】:

    看看documentation of the equals method for BigDecimal

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

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

    【讨论】:

      【解决方案2】:

      BigDecimal equals 方法考虑了数字的比例,所以 BigDecimals 12.0 和 12.00 是不同的。您应该使用 Bigdecimal compareTo 方法。

      【讨论】:

      • compareTo 返回一个等于 -1、1 或 0 的整数。我很想知道预期值和实际值是什么,而不仅仅是它们不同的信息......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多