dav*_*ooh 3 java unit-testing assertj
我正在使用 AssertJ,我需要检查列表中的所有对象是否具有intField > 0. 像这样的东西:
assertThat(myObjectList).extracting(p -> p.getIntField()).isGreaterThan(0);
Run Code Online (Sandbox Code Playgroud)
实现这一目标的正确方法是什么?我应该使用其他图书馆吗?
选项 1:
assertThat(asList(0, 2, 3))
.allMatch(i -> i > 0);
Run Code Online (Sandbox Code Playgroud)
选项 2(由Jens Schauder建议):
使用Consumer<E>基于断言allSatisfy:
assertThat(asList(0, 1, 2, 3))
.allSatisfy(i ->
assertThat(i).isGreaterThan(0));
Run Code Online (Sandbox Code Playgroud)
第二个选项可能会产生更多信息性的失败消息。
在这种特殊情况下,该消息强调某些元素预计大于 0
java.lang.AssertionError:
Expecting all elements of:
<[0, 1, 2, 3]>
to satisfy given requirements, but these elements did not:
<0>
Expecting:
<0>
to be greater than:
<0>
Run Code Online (Sandbox Code Playgroud)