assertj:将对象集合与条件/Assert集合相匹配的最佳方法

8zzbczxx  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(280)

我正在寻找一种方便的方法,将对象列表与条件或Assert列表进行匹配,使所有记录都可以按任何顺序排列,但所有记录都应与所有指定的条件匹配。特定对象到特定条件。
例子:
我有一个对象列表,可以按任意顺序获取。比如说以下类型:

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");

现在我想有一个操作符,它将获取一个人员列表,并将每个人员与条件列表相匹配。其中一个条件应该通过,否则-Assert失败。人员和条件的顺序可能是任意的。
有没有任何方法可以在不添加自定义实现的情况下做到这一点?
p、 我知道extracting()方法,但认为比较复杂对象并不方便。

tyu7yeag

tyu7yeag1#

你至少可以测试其中一个条件 personA 以及 personB 中的每一个元素都满足
List personList 具体如下:

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

请参见assertj文档。
注:需要以下导入:

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

相关问题