按照您的示例进行操作:
assertThat(theList).extracting("fieldA", "fieldB").isNotNull();
isNotNull
只判断extracting
返回的Iterable
个元组是否不为空.
flatExtracting
+ doesNotContainNull
要判断提取的值是否都不为空,可以使用flatExtracting
和doesNotContainNull
:
assertThat(theList).flatExtracting("fieldA", "fieldB").doesNotContainNull();
在出现故障的情况下,它会生成如下消息:
java.lang.AssertionError:
Expecting actual:
["value1", "value2", null, "value4"]
not to contain null elements
由于解决方案的扁平化性质,没有哪个对象导致故障的指示,但是可以通过对所显示的actual
中的配对进行计数来识别.
extracting
+ noneMatch
为了使错误消息更清晰,可能会增加复杂性:
assertThat(theList).extracting("fieldA", "fieldB").noneMatch(tuple -> tuple.toList().contains(null));
在失败的情况下产生的yield :
java.lang.AssertionError: [Extracted: fieldA, fieldB]
Expecting no elements of:
[("value1", "value2"), (null, "value4")]
to match given predicate but this element did:
(null, "value4")
extracting
+ allSatisfy
+ doesNotContainNull
另一种更清晰的错误消息选项是:
assertThat(theList).extracting("fieldA", "fieldB").allSatisfy(tuple -> assertThat(tuple.toList()).doesNotContainNull());
在失败的情况下产生的yield :
java.lang.AssertionError: [Extracted: fieldA, fieldB]
Expecting all elements of:
[("value1", "value2"), (null, "value4")]
to satisfy given requirements, but these elements did not:
(null, "value4")
error:
Expecting actual:
[null, "value4"]
not to contain null elements