hasItems
checks:
在檢查可迭代收率的至少一個項目,其等於從指定items
相應的項目連續傳球。
也就是說,它可以確保集合包含至少這些項目,以任意順序。所以,
assertThat(c, hasItems("one", "two"));
也會通過,與多餘的項目被忽略。並且:
assertThat(c, hasItems("three", "two", "one"));
也會通過。
contains
checks:
單個傳過來的檢查Iterable
產生了一系列項目,每個邏輯上等於相應項目中指定項。對於肯定匹配,被檢查的迭代必須與指定項目的數量具有相同的長度。
所以它確保集合包含正是這些項目:
assertThat(c, contains("one", "two")); // Fails
這將失敗,因爲剩下的"three"
不匹配。
assertThat(c, contains("three", "two", "one")); // Fails
由於相應的項目不匹配而失敗。
另一個相關的匹配,containsInAnyOrder
,checks恰好這些項目都存在,但在任何順序:
創建用於Iterables
的順序無關的匹配器匹配當單個傳過來的檢查Iterable
產生一系列項目,每個項目在邏輯上等於指定項目中任何位置的一個項目。
一個缺失項目測試失敗:
assertThat(c, containsInAnyOrder("one", "two")); // Fails
但以不同的順序所有項目將通過:
assertThat(c, containsInAnyOrder("three", "two", "one"));
來源
2015-11-21 06:41:37
Joe