如何校验提取对象列表后值不为空(Java)

假设有一个对象列表theList,每个对象包含fieldA和fieldB两个字段,需要校验提取出来的字段值不为空,可以使用AssertJ的以下多种方式实现:

  1. flatExtracting + doesNotContainNull

可以使用flatExtracting将字段提取并扁平化,然后通过doesNotContainNull校验是否包含空值:

javaCopy codeassertThat(theList).flatExtracting("fieldA", "fieldB").doesNotContainNull();

这种方式无法指明是哪个对象的哪个字段为空,但简单直接。

  1. extracting + noneMatch

可以在extracing后再使用noneMatch进行逐个对象校验:

javaCopy codeassertThat(theList).extracting("fieldA", "fieldB").noneMatch(tuple -> tuple.toList().contains(null));

失败时可以清晰指出是哪个对象出现问题。

  1. extracting + allSatisfy + doesNotContainNull

也可以在extracing后,通过allSatisfy逐个对象校验不包含空值:

javaCopy codeassertThat(theList).extracting("fieldA", "fieldB").allSatisfy(tuple -> assertThat(tuple.toList()).doesNotContainNull());

失败时同样可以指明问题对象,信息更加明确。

总之,AssertJ提供了多种思路在提取对象列表后校验非空,可以根据需求选择最适合的方式,使校验代码更加优雅。