如何遍历LinkedHashMap集合并按索引进行单元测试断言?
如何按索引遍历Collection集合并做差异化断言?
你可以通过以下几种方式实现按索引区分元素来设置不同断言:
方法一:将Collection转换为List直接按索引访问
因为Collection本身不支持索引操作,但List支持,所以先把你的responseObjects转成List,之后就能通过索引精准访问每个元素:
// 把Collection转换为ArrayList,保留原有顺序 List<Map<String, Object>> responseList = new ArrayList<>(responseObjects); // 对第一个元素做断言 assertEquals("第一个元素的预期值", responseList.get(0).get("stringField")); // 对第二个元素做断言 assertEquals("第二个元素的预期值", responseList.get(1).get("stringField"));
方法二:用迭代器配合计数器遍历
如果不想转换集合类型,可以用迭代器遍历,同时维护一个计数器来判断当前元素的索引:
Iterator<Map<String, Object>> iterator = responseObjects.iterator(); int index = 0; while (iterator.hasNext()) { Map<String, Object> response = iterator.next(); if (index == 0) { assertEquals("第一个元素的预期值", response.get("stringField")); } else if (index == 1) { assertEquals("第二个元素的预期值", response.get("stringField")); } index++; }
注意事项
- 要确保你的
Collection是有序的(比如实际是ArrayList、LinkedHashSet这类实现),否则索引对应的元素可能和预期不符。你这里用的是LinkedHashMap的集合,只要原Collection的实现是有序的,转换后顺序就能保证。
内容的提问来源于stack exchange,提问作者Kanchan Soni
相关产品推荐
相关产品推荐

