如何junit List <map <string,string =“”>&gt;在java?</map <string,>

时间:2014-03-02 00:21:18

标签: java junit assert

我正在尝试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,dc1dc2dc3的值在同一张地图中彼此不同。

所以如果地图是这样的 -

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,dc1dc2dc3的值在地图中彼此不同。

所以如果地图是这样的 -

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}]

2 个答案:

答案 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);
            }
        }
    }