AssertJ:将对象集合与 conditions/assertions 的集合进行匹配的最佳方式

AssertJ: Best way for matching collection of objects against to the collection of conditions/assertions

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

示例:

我有对象列表,可以按任意顺序获取。 让我们说以下类型:

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 documentation

请注意需要导入以下内容:

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