具有列表成员的java Hamcrest assert复杂对象
如果我有POJO课程
@Value
@AllArgsConstructor
class Person {
private final String name;
private final int age;
private final List<Address> addresses;
}
如您所见,该对象包含一个列表。在我的单元测试中,很难断言这一点,因为地址(或Person的任何其他潜在列表/集合/映射属性)的顺序是未知的
如何在不更改Person类的equals方法的情况下进行断言,并确保忽略地址的顺序?我在找像这样的东西
assertThat(actualPerson, is(expectedPerson).ignoreOrderingOf("addresses"));
我的意思是,在断言中应该忽略actualPerson.addresses
和expectedPerson.addresses
的顺序
我通常应该使用什么测试策略来解决这个问题
# 1 楼答案
您可以单独比较地址,如下所示:
第一个断言将比较除地址之外的所有属性,第二个断言将在忽略顺序的情况下比较地址