java - 选项列表上的 AssertJ
问题描述
我有一个可选列表,List<Optional<String>> optionals
我喜欢用assertj
它来断言几件事。
但我没能正确地做到这一点——我只在单个 Optional 上找到示例。
当然我可以自己做所有的检查,比如
Assertions.assertThat(s).allMatch(s1 -> s1.isPresent() && s1.get().equals("foo"));
并链接那些,但我仍然有一种感觉,通过 api 有一种更聪明的方式。
List<Optional<T>>
我在这里错过了什么,还是在 assertj中没有支持?
解决方案
AssertJ 似乎没有为可选集合提供实用程序,但您可以迭代您的列表并对每个项目执行您的断言。
list.forEach(element -> assertThat(element)
.isPresent()
.hasValue("something"));
一种可能更好的方法是收集所有断言,而不是停留在第一个断言上。你可以用SoftAssertions
不同的方式使用,但我更喜欢这个:
SoftAssertions.assertSoftly(softly ->
list.forEach(element -> softly.assertThat(element).isPresent())
);
推荐阅读
- c# - 使用列表
在 Kentico 电子邮件模板中的宏 - javascript - 如何编码本地存储中的图像数组?
- python-3.x - pyinstaller pyqt5 configparser.nosectionerror:no section "png_path": failed to execute script .py
- python-3.x - 在“exec”函数之后,locals() 中无法访问的变量
- c# - 如何发送包含任何视频文件的电子邮件
- flutter - 用前置摄像头录制视频时屏幕变暗变窄
- firebase - firebaseui 不呈现登录 html
- scala - 如何在scala中设置neo4j-java-driver和gremlin-scala
- laravel - Laravel - 在单元测试中伪造保存失败
- javascript - 导航到 chrome 中的另一个页面时更改/删除以前的历史记录 url