簡體   English   中英

Hamcrest 用列表成員斷言復合體 object

[英]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.addressesexpectedPerson.addresses順序應該在斷言中被忽略。

我一般應該使用什么測試策略來解決這個問題?

您可以像這樣分別比較地址:

assertThat(actualPerson, samePropertyValuesAs(expectedPerson, "addresses"))
assertThat(actualPerson.addresses, containsInAnyOrder(expectedPerson.addresses))

第一個斷言將比較除地址之外的所有屬性,第二個斷言將在忽略順序的情況下比較地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM