在 Predicate 中使用 isEqualByComparingTo

Use isEqualByComparingTo in Predicate

正常使用像 isEqualByComparingTo:

这样的漂亮的 assertj-matchers
BigDecimal number = ...
assertThat(number).isEqualByComparingTo(BigDecimal.valueOf(...));

但是我有一个 BigDecimals 列表,我想通过使用 assertj 的匹配器来检查列表中的每个元素是否相等,例如 isEqualByComparingTo:

List<BigDecimal> numbers = ...
assertThat(numbers).allMatch( ???.isEqualByComparingTo(BigDecimal.valueOf(...) )

相反,我不得不使用乏味的低级比较:

List<BigDecimal> numbers = ...
assertThat(numbers).allMatch( number -> number.compareTo(...) == 0 )

是否有可能在谓词中使用漂亮的匹配器?

尝试 usingElementComparator with BigDecimalComparator(或编写您自己的 BigDecimalComparator)。

示例:

List<BigDecimal> numbers = list(new BigDecimal("1.00"), new BigDecimal("2.00"));

assertThat(numbers).usingElementComparator(new BigDecimalComparator())
                   .contains(new BigDecimal("1.0"), new BigDecimal("2"));