我正在尝试jUnit返回Map of Map的方法之一。
List<Map<String, String>> mappings = TestUtils.getMappings(maps, debug);
System.out.println(mappings);
以下是我得到的输出 -
[{dc1=h1, dc2=h2, dc3=h3},
{dc1=h4, dc2=h5, dc3=h6},
{dc1=h7, dc2=h8, dc3=h9},
{dc1=h10, dc2=h11, dc3=h1}, I am trying to jUnit one of my method which returns `List of Map<String, String>` -
List<Map<String, String>> mappings = TestUtils.getMappings(maps, debug);
System.out.println(mappings);
以下是我得到的输出 -
[{dc1=h1, dc2=h2, dc3=h3},
{dc1=h4, dc2=h5, dc3=h6},
{dc1=h7, dc2=h8, dc3=h9},
{dc1=h10, dc2=h11, dc3=h1},
{dc1=h2, dc2=h1, dc3=h4},
{dc1=h5, dc2=h4, dc3=h7},
{dc1=h8, dc2=h7, dc3=h10},
{dc1=h11, dc2=h10, dc3=h2},
{dc1=h3, dc2=h6, dc3=h8},
{dc1=h9, dc2=h3, dc3=h5},
{dc1=h6, dc2=h9, dc3=h11}]
我正在尝试查看每张地图是否都有正确的值。简而言之,每张地图都会有这样的值 -
dc1=h9, dc2=h3, dc3=h5
所以我需要junit,dc1
,dc2
和dc3
的值在同一张地图中彼此不同。
所以如果地图是这样的 -
dc1=h1, dc2=h2, dc3=h1
然后我的断言应该失败,因为dc3的值也存在于dc3中。
现在我不确定jUnit最好的是什么? {dc1 = h2,dc2 = h1,dc3 = h4}, {dc1 = h5,dc2 = h4,dc3 = h7}, {dc1 = h8,dc2 = h7,dc3 = h10}, {dc1 = h11,dc2 = h10,dc3 = h2}, {dc1 = h3,dc2 = h6,dc3 = h8}, {dc1 = h9,dc2 = h3,dc3 = h5}, {dc1 = h6,dc2 = h9,dc3 = h11}]
现在我不确定jUnit最好的是什么?实际上我在为地图
做jUnit时遇到了问题我正在尝试查看每张地图是否都有正确的值。简而言之,每张地图都会有这样的值 -
dc1=h9, dc2=h3, dc3=h5
所以我需要junit,dc1
,dc2
和dc3
的值在地图中彼此不同。
所以如果地图是这样的 -
dc1=h1, dc2=h2, dc3=h1
然后我的断言应该失败,因为dc3的值也存在于dc3中。
更新: -
对于其他一些输入,我会看到这样的输出 -
[{dc1=h1, dc2=h2, dc3=h3},
{dc1=h2, dc2=h1},
{dc1=h3, dc2=h4, dc3=h2},
{dc2=h5, dc3=h1},
{dc2=h3},
{dc2=h6},
{dc2=h7},
{dc2=h8},
{dc2=h9},
{dc2=h10},
{dc2=h11}]
答案 0 :(得分:2)
您有一张地图列表。每个Map都有N个键,您声明要确保每个映射中没有重复的值。
1)获取每个地图的值
2)实例化HashSet并添加值
3)验证集合的长度是否
答案 1 :(得分:0)
请尝试以下代码:
验证所有值都是唯一的:
for(Map<String, String> eachMap : mapList) {
Collection<String> values = eachMap.values();
Set<String> valuesAsSet = new HashSet<>(values);
assertEquals(values.size(), valuesAsSet.size());
}
如果您需要验证订单:
for(Map<String, String> eachMap : mapList) {
Collection<String> values = eachMap.values();
Set<String> valuesAsSet = new HashSet<>(values);
Iterator<String> expectedIt = values.iterator();
Iterator<String> actualIt = valuesAsSet.iterator();
boolean expectedHasNext = expectedIt.hasNext();
boolean actualHasNext = actualIt.hasNext();
// Iterators are consistent
assertEquals(expectedHasNext, actualHasNext);
if(expectedHasNext) {
if(expectedHasNext) {
String expected = expectedIt.next();
String actual = actualIt.next();
assertEquals(expected, actual);
}
}
}