正常使用isEqualByComparingTo
之类的好assertj-matchers:
BigDecimal number = ...
assertThat(number).isEqualByComparingTo(BigDecimal.valueOf(...));
但是我有一个BigDecimals列表,并且想使用isEqualByComparingTo
之类的assertj的匹配器来检查列表中的每个元素是否相等:
List<BigDecimal> numbers = ...
assertThat(numbers).allMatch( ???.isEqualByComparingTo(BigDecimal.valueOf(...) )
相反,我必须使用乏味的低级比较:
List<BigDecimal> numbers = ...
assertThat(numbers).allMatch( number -> number.compareTo(...) == 0 )
是否可以在谓词中使用漂亮的匹配器?
答案 0 :(得分:1)
尝试使用usingElementComparator
和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"));