假设有一个对象列表theList,每个对象包含fieldA和fieldB两个字段,需要校验提取出来的字段值不为空,可以使用AssertJ的以下多种方式实现:
- flatExtracting + doesNotContainNull
可以使用flatExtracting将字段提取并扁平化,然后通过doesNotContainNull校验是否包含空值:
javaCopy codeassertThat(theList).flatExtracting("fieldA", "fieldB").doesNotContainNull();
这种方式无法指明是哪个对象的哪个字段为空,但简单直接。
- extracting + noneMatch
可以在extracing后再使用noneMatch进行逐个对象校验:
javaCopy codeassertThat(theList).extracting("fieldA", "fieldB").noneMatch(tuple -> tuple.toList().contains(null));
失败时可以清晰指出是哪个对象出现问题。
- extracting + allSatisfy + doesNotContainNull
也可以在extracing后,通过allSatisfy逐个对象校验不包含空值:
javaCopy codeassertThat(theList).extracting("fieldA", "fieldB").allSatisfy(tuple -> assertThat(tuple.toList()).doesNotContainNull());
失败时同样可以指明问题对象,信息更加明确。
总之,AssertJ提供了多种思路在提取对象列表后校验非空,可以根据需求选择最适合的方式,使校验代码更加优雅。
标签:
Java