comparison - 在谓词中使用 isEqualByComparingTo
问题描述
正常使用漂亮的 assertj-matchers,例如isEqualByComparingTo
:
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
使用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"));
推荐阅读
- azure - 无法从我的 Webapp 连接到我的 MYSQL Azure - 1045,“用户 'dbadmin'@'xx.xx.xx.x' 的访问被拒绝(使用密码:是)
- java - Jersey 2 - 在过滤器中注入请求范围的服务
- python - 如何识别列中的元素是整数还是字符串?
- python - 标记熊猫数据框中日期范围内的日期时间列表
- javascript - 为什么我的测验无法在触摸屏上开始?
- android-arrayadapter - 在listview android java中使用毕加索设置imageview
- react-native - 布尔数组作为复选框值?
- php - 在 sql 查询中选择具有多个 OR 的 DISTINCT
- java - 有没有办法在没有 AsyncPlayerChatEvent 的情况下捕捉玩家聊天输入?
- python - 如何确保终止多处理池?