2014-03-02 51 views
-4

我想要给我的方法之一返回地图列表。如何在java中列出<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=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=h9, dc2=h3, dc3=h5

所以我需要junit,dc1dc2dc3的值在相同的地图中彼此不同。

因此,如果地图是这样的 -

dc1=h1, dc2=h2, dc3=h1

然后我的说法应该失败,因为DC1的价值是存在的DC3以及..

现在,我不知道是什么最好的jUnit这个? {dc1 = h2,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

然后我的说法应该失败,因为DC1的价值是存在的DC3以及..

UPDATE: -

对于其他一些输入,我会看到这样的输出 -

[{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}] 
+4

你试图测试什么?不要将junit用作动词。 –

+0

刚刚更新了这个问题..对不起,我发布这个问题还为时过早..我忘了添加几件事.. – AKIWEB

回答

2

您有地图列表。每个地图都有N个键,并且您声明您要确保每个地图中都没有重复的值。

1)获得每个地图
2)实例化一个HashSet的值,并添加值
3)验证该组的长度是N

+0

好逻辑..这工作正常,如果我有dc1,dc2,dc3进来输出..但对于一些其他的输入,我会在地图中看到只有dc1,dc2 ..我用另一个输出更新了我的问题。 – AKIWEB

+0

那么显然你需要在地图中记录**的初始值**,并将其与哈希集中的结果数进行比较。编辑用'N'替换'3' –

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); 
      } 
     } 
    } 
相关问题