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
中的每个元素至少满足条件 personA
和 personB
之一,如下所示:
assertThat( personList ).are( anyOf( personA, personB ) );
请注意需要导入以下内容:
import static org.assertj.core.api.Assertions.anyOf;
import static org.assertj.core.api.Assertions.assertThat;
我正在寻找一种将对象列表与 所有记录可以按任何顺序排列的条件或断言,但所有记录都应匹配所有指定条件。具体对象具体情况。
示例:
我有对象列表,可以按任意顺序获取。 让我们说以下类型:
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
中的每个元素至少满足条件 personA
和 personB
之一,如下所示:
assertThat( personList ).are( anyOf( personA, personB ) );
请注意需要导入以下内容:
import static org.assertj.core.api.Assertions.anyOf;
import static org.assertj.core.api.Assertions.assertThat;