繁体   English   中英

如何在TestNG中断言字符串ArrayList的ArrayList

[英]How to assert ArrayList of String ArrayList equal in TestNG

我有一种方法,将给定的String ArrayList分组为String ArrayList的ArrayList,每个String ArrayList包含相同长度的字符串。 方法是:

公共静态ArrayList> getGrouping(ArrayList strlist)

 {

    Map<Integer, ArrayList<String>> mapOfList = new HashMap<Integer, ArrayList<String>>();  
    /*
     * Define ArrayList of ArrayList to build the output to return, and, 
     *another ArrayList to act as sub-array to build the output
    */
    ArrayList<ArrayList<String>> outer = new ArrayList<ArrayList<String>>();
    ArrayList<String> inner = new ArrayList<String>();
    String temp;      

    /*
     * populate the map of lists in the format map <length of string , list of strings of this length
     */
    for(int i = 0; i <strlist.size(); i++)
    {
        temp = strlist.get(i);  
        if (temp ==  null)
            continue;
        int len = temp.length();
        len = new Integer(len);
        if(mapOfList.get(len) == null)
            {
                mapOfList.put(len, new ArrayList<String>());
            }
        mapOfList.get(len).add(temp);   
    }

    /*
     * Build sub ArrayList using ArrayList at every entry and add this to the outer ArrayList to be returned
     */
    for(Map.Entry<Integer, ArrayList<String>> entry : mapOfList.entrySet())
        {           
            inner = entry.getValue();           
            outer.add(inner);           
        }
   return outer;
    }

我是TestNG的新手,正在尝试为上述代码编写测试方法。 我在构建预期结果时遇到麻烦(这是String ArrayList的ArrayList)。 最好的方法是什么? 我现在做的方式会引发错误:

java.lang.ClassCastException:java.util.Arrays $ ArrayList无法转换为java.util.ArrayList

同样,我构建输入的方式可能不是最佳方式。 可以做得更好吗? 我现在失败的TestNG @Test方法是:

public void testWithNullValues() 
   {
       ArrayList<ArrayList<String>> oup = new ArrayList<ArrayList<String>>();
       ArrayList<String> inp = new ArrayList<String>();
       inp.add("abc");
       inp.add("ba");
       inp.add("bdc");
       inp.add(null);
       inp.add("bfed");
       inp.add(null);
       inp.add("bdsf");
       inp.add("a");
       inp.add("b");
       inp.add("bdcjkhwd");
       oup = GroupListOfString.getGrouping(inp);

      ArrayList<ArrayList<String>> expectedResult = new ArrayList<ArrayList<String>>();
      expectedResult.add((ArrayList<String>) Arrays.asList("a", "b"));
      expectedResult.add((ArrayList<String>) Arrays.asList("ba"));
      expectedResult.add((ArrayList<String>) Arrays.asList("abc", "bdc"));
      expectedResult.add((ArrayList<String>) Arrays.asList("bfed","bdsf"));
      expectedResult.add((ArrayList<String>) Arrays.asList("bdcjkhwd"));

      Assert.assertEquals(expectedResult, oup);

      inp.clear();
    }

提前致谢!

Arrays.asList返回一个java.util.Arrays.ArrayList ,它与您的课程其余部分使用的java.util.ArrayList不同。 但是,您可以构建一个:

ArrayList<ArrayList<String>> expectedResult = new ArrayList<>();
expectedResult.add(new ArrayList<>(Arrays.asList("a", "b")));
expectedResult.add(new ArrayList<>(Arrays.asList("ba")));
expectedResult.add(new ArrayList<>(Arrays.asList("abc", "bdc")));
expectedResult.add(new ArrayList<>(Arrays.asList("bfed","bdsf")));
expectedResult.add(new ArrayList<>(Arrays.asList("bdcjkhwd")));

Assert.assertEquals(expectedResult, oup);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM