0

在我拥有的一个junit中,我得到以下失败原因

java.lang.AssertionError: expected:<1200000> but was:<1.2E+6>

这本质上是相同的值。当我从邮递员那里打到时,实际的 json 响应是 1200000,而我用来获取 1200000 字段的方法的返回类型是 BigDecimal。

不知道如何实际修复这个 1.2E+6。

4

2 回答 2

0

您很可能尝试将 BigDecimal 与另一种类型进行比较,但比较失败。请检查 javadoc:https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#equals(java.lang.Object)

“当且仅当指定的 Object 是一个 BigDecimal,其值和比例等于这个 BigDecimal 的值时才为真。”

如果 2 个数字不是 BigDecimal,您将得到错误。如果 2 是 Bigdecimal 但比例不同,则应使用 compareTo。

于 2020-07-20T11:31:42.907 回答
0

您可以做的最简单的事情是使用long值进行比较:

assertEquals(new BigDecimal("1.2E+6").longValue(), 1200000);

或者你可以使用AssertJ一个漂亮整洁的BigDecimal断言:

assertThat(new BigDecimal("1.2E+6")).isEqualByComparingTo(new BigDecimal("1200000"));
//or
assertThat(new BigDecimal("1.2E+6")).isEqualByComparingTo("1200000");
于 2020-07-20T11:33:41.167 回答