AssertJ在可选列表上

时间:2019-02-12 07:31:32

标签: java assertj

我有一个可选列表,例如List<Optional<String>> optionals,我喜欢在其上使用assertj声明几件事。

但是我无法正确执行此操作-我只能在单个Optional上找到示例。

我当然可以自己做所有检查

Assertions.assertThat(s).allMatch(s1 -> s1.isPresent() && s1.get().equals("foo"));

并将它们链接起来,但我仍然有一种感觉,那就是通过api有一种更聪明的方法。

我在这里错过了什么吗?assertj中是否不支持List<Optional<T>>

1 个答案:

答案 0 :(得分:1)

AssertJ似乎没有为可选对象的集合提供实用程序,但是您可以迭代列表并对每个项目执行断言。

list.forEach(element -> assertThat(element)
        .isPresent()
        .hasValue("something"));

也许 更好的方法是收集所有断言,而不是在第一个断言处停止。您可以以不同的方式使用SoftAssertions,但我更喜欢以下一种方式:

SoftAssertions.assertSoftly(softly ->
    list.forEach(element -> softly.assertThat(element).isPresent())
);