[英]Hamcrest assert complex object with List member
如果我有 POJO class
@Value
@AllArgsConstructor
class Person {
private final String name;
private final int age;
private final List<Address> addresses;
}
如您所見,object 包含一個列表。 在我的單元測試中,很難對此進行斷言,因為不知道地址(或 Person 的任何其他潛在 List/Set/Map 屬性)的順序。
如何在不更改 Person class 的 equals 方法的情況下進行斷言並確保忽略地址的順序? 我正在尋找類似的東西
assertThat(actualPerson, is(expectedPerson).ignoreOrderingOf("addresses"));
我的意思是actualPerson.addresses
和expectedPerson.addresses
的順序應該在斷言中被忽略。
我一般應該使用什么測試策略來解決這個問題?
您可以像這樣分別比較地址:
assertThat(actualPerson, samePropertyValuesAs(expectedPerson, "addresses"))
assertThat(actualPerson.addresses, containsInAnyOrder(expectedPerson.addresses))
第一個斷言將比較除地址之外的所有屬性,第二個斷言將在忽略順序的情況下比較地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.