在我拥有的一个junit中,我得到以下失败原因
java.lang.AssertionError: expected:<1200000> but was:<1.2E+6>
这本质上是相同的值。当我从邮递员那里打到时,实际的 json 响应是 1200000,而我用来获取 1200000 字段的方法的返回类型是 BigDecimal。
不知道如何实际修复这个 1.2E+6。
您很可能尝试将 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。
您可以做的最简单的事情是使用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");