AssertJ:将对象集合与条件/断言集合进行匹配的最佳方式



我正在寻找一种将对象列表与条件或断言,这样所有记录都可以按任何顺序排列,但所有记录都应该与所有指定的条件匹配。特定对象到特定条件。

示例:

我有一个对象列表,可以按任意顺序提取。比方说以下类型:

class Person {
String name;
Integer age;
}
Person A is Bobby, 34y
Person B is John, 15y 

我有一份我希望符合的条件清单。

Condition personA = new Condition<>(p -> p.name.equals("Bobby"), "Person A");
Condition personB = new Condition<>(p -> p.name.equals("john"), "Person B");

现在,我希望有一些操作员,可以获取人员列表,并将每个人与条件列表相匹配。条件之一应通过,否则断言失败。人的秩序和条件可能是任意的。

有没有任何方法可以在不添加自定义实现的情况下做到这一点?

p.S>我知道extracting((方法,但认为它对比较复杂对象不太方便。

您可以测试List <Person>personList中的每个元素是否至少满足条件personApersonB之一,如下所示:

assertThat( personList ).are( anyOf( personA, personB ) );

请参阅AssertJ文档。

请注意,需要以下进口:

import static org.assertj.core.api.Assertions.anyOf;
import static org.assertj.core.api.Assertions.assertThat;

最新更新