[英]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.