如何比较LISTS使用assertJ递归地忽略给定的字段?
问题描述:
首先,这不是this question的重复。在那里,它被特别要求提供一个对象。我想为Container执行此操作,特别是List。如何比较LISTS使用assertJ递归地忽略给定的字段?
所以,我知道我可以忽略一个字段时使用 usingElementComparatorIgnoringFields()
但是这不会做一个递归的比较。
我知道我可以使用usingRecursiveFieldByFieldElementComparator()
。但是这不会让我排除一个给定的领域。
如何递归比较,忽略字段?
答
同时,你可以这样写:
assertThat(actualList)
.usingElementComparator(recursiveIgnoringComparator("excludedField1", "excludedField2", "excludedField3"))
.containsExactlyInAnyOrder(expectedList);
}
private Comparator<T> recursiveIgnoringFieldsComparator(String... fieldNames) {
final Map<String, Comparator<?>> comparatorByPropertyOrField =
Arrays.stream(fieldNames)
.collect(toMap(
name -> name,
name -> (o1, o2) -> 0
));
return new RecursiveFieldByFieldComparator(comparatorByPropertyOrField, new TypeComparators());
}