夢のの*_*のの夢 2 java junit assertj
我正在运行这样的断言:
assertThat(obj.getTotal()).isEqualTo(BigDecimal.valueOf(4))
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
期望:<4.00> 等于:<4>
所以我试过了
assertThat(obj.getTotal()).isEqualTo(BigDecimal.valueOf(4.00))
Run Code Online (Sandbox Code Playgroud)
期望:<4.00> 等于:<4.0>
我找到了一种解决方法,在该方法中我将预期值的比例设置4为4.00,但我必须为测试中的所有 BigDecimal 变量这样做似乎很令人恼火。AssertJ 有没有我不知道的更好的方法?
您可以使用isEqualByComparingTo或比较实际数值的usingComparator使用BigDecimal.compareTo。equals默认 assertj 使用的方法根据JavaDoc执行以下操作:
与 compareTo 不同,此方法仅当两个 BigDecimal 对象的值和比例相等时才认为它们相等(因此,通过此方法进行比较时,2.0 不等于 2.00)。
所以你可以这样做:
assertThat(obj.getTotal())
.usingComparator(BigDecimal::compareTo)
.isEqualTo(BigDecimal.valueOf(4.00));
Run Code Online (Sandbox Code Playgroud)
或者干脆:
assertThat(obj.getTotal())
.isEqualByComparingTo(BigDecimal.valueOf(4.00));
Run Code Online (Sandbox Code Playgroud)
Iterable与extracting断言一起使用:
assertThat(asList(new Trade("1", new BigDecimal("5.200")), new Trade("2", new BigDecimal("4.00"))))
.extracting(Trade::getId, Trade::getAmount)
.usingComparatorForType(BigDecimal::compareTo, BigDecimal.class)
.usingRecursiveFieldByFieldElementComparator()
.containsExactlyInAnyOrder(tuple("1", new BigDecimal("5.2")), tuple("2", new BigDecimal("4")));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |