我希望比较测试中的2个对象列表(例如Foo)。
List<Foo> fooA;
List<Foo> fooB;
每个Foo条目都具有类型为List(例如Bar)的字段之一
class Foo {
private List<Bar> bars;
....
}
assertThat(fooA).isEqualTo(fooB);
比较失败,因为条形元素相同但顺序不同。
有没有办法比较它们的忽略顺序?
我不在寻找以下选项。
assertThat(fooA).usingElementComparatorIgnoringFields("bars").isEqualTo(fooB);
理想情况下,我想比较所有字段
答案 0 :(得分:3)
您要寻找的是IterableAssert
中定义的containsExactlyInAnyOrderElementsOf(Iterable)
(重点是我的):
验证实际组是否完全包含给定值,以及 没什么,以任何顺序。
您可以这样写:
List<Foo> fooA;
List<Foo> fooB;
//...
assertThat(fooA).containsExactlyInAnyOrderElementsOf(fooB);
答案 1 :(得分:0)
你可以用 assertJ 做到这一点:
assertThat(fooA).usingRecursiveComparison().ignoringCollectionOrder().isEqualTo(fooB)