从方法返回时,Java列表为空

时间:2019-09-20 14:11:53

标签: java list junit

我有一个方法,该方法循环遍历一个已排序的数组,并将那些已排序的List元素循环到另一个名为sortedFirstName的列表。这是方法代码。

 public void sortFirstName(String input){
       Collections.sort(fullName, new FirstNameComparator(input)); 

       for(int i = 0;i<fullName.size();i++){
           System.out.println("\n" + fullName.get(i));
           sortedFirstName.add(fullName.get(i)); //adds to list fine

       }
        System.out.println("Sorted First Name" + sortedFirstName);
        //prints desired output, [Jake Paul, Billy Robinson, Charles Princeton, John Paul, Karen Jacobs]

名字是一个列表,其实例化方式为List<String> fullName = new ArrayList<String>();,并从方法listAllContacts中进行填充:

public void listAllContacts(){

        for (Map.Entry<String,Person> entry : contacts.entrySet()) {
         fullName.add(entry.getValue().fullName());
}
        for (String contents : fullName) {                
           System.out.println("\n" + contents);         
      }
    }

它由作为哈希图中对象字段的字符串填充

从此方法中,我打印list sortedFirstName列表的内容,并获得正确的输出,该输出在print语句下进行了注释。

我也有此get方法返回该列表

public List<String> getSortedFirstNames(){
        return this.sortedFirstName;
    }

在Junit类中,我像这样调用这些方法

@Test
    public void sortFirst(){
        ad1.sortFirstName("Jake");
        List sorted = ad1.getSortedFirstNames();
        List sortedList = new ArrayList();
        sortedList.addAll(Arrays.asList("Jake Paul", "Billy Robinson", "Charles Princeton", "John Paul", "Karen Jacobs")); //expected output from boostrapped users
        assertEquals(sortedList,sorted);
    }

根据我的测试用例逻辑,应该是List sorted包含元素[Jake Paul, Billy Robinson, Charles Princeton, John Paul, Karen Jacobs],但是当我将硬编码列表与sorted比较时,它显示为空。我看不到任何问题,因为sortedFirstName显然已添加了元素,将不胜感激

1 个答案:

答案 0 :(得分:0)

我发现了我的错误。实际上需要使用listAllContacts方法来填充fullName变量。如果没有调用listAllContacts方法,它就不会填充fullName,也就不会填充sortedFirstName列表。

这是我的新代码:

@Test
    public void sortFirst(){
        ad1.listAllContacts();
        ad1.sortFirstName("Jake");
        List sorted = ad1.getSortedFirstNames();
        List sortedList = new ArrayList();
        sortedList.addAll(Arrays.asList("Jake Paul", "Billy Robinson", "Charles Princeton", "John Paul", "Karen Jacobs")); //expected output from boostrapped users
        assertEquals(sortedList,sorted);
    }

请注意解决了我的问题的ad1.listAllContacts();。感谢所有对此的评论,非常感谢。