[英]How to assert unordered HashSet elements in Java Unit Test?
我有一個返回HashSet<T>
的服務方法的單元測試,我在測試方法中得到它,如下所示:
Set<EmployeeDTO> result = employeeService.findAllByUuid(uuid);
// I also convert the set to list for accessing by index:
List<EmployeeDTO> resultList = new ArrayList<>(result);
並嘗試斷言如下所示:
assertEquals("Hans", resultList.get(0).getName());
但是,結果集中有 2 個元素,正如預期的那樣, HashSet
中的順序正在發生變化。 在這個場景中,當我收到HashSet
作為被測方法的返回類型時,我應該如何進行斷言?
如果順序可以更改,您可以簡單地斷言該集合包含該值,因為順序更改意味着您沒有理由期望特定值出現在特定索引處:
@Test
void testSetContainsHans(String uuid) {
Set<EmployeeDTO> result = employeeService.findAllByUuid(uuid);
boolean containsHans = false;
for (EmployeeDTO emp : result) {
if ("Hans".equals(emp.getName()) {
containsHans = true;
break;
}
}
assertTrue(containsHans, "No employee named Hans was found.");
}
如果employeeService.findAllByUuid(uuid)
返回的集合包含至少一個名為“Hans”的EmployeeDTO
,則此測試將通過,或者失敗並顯示"No employee named Hans was found."
如果沒有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.