2
@Parameters
public static Collection data() throws IOException {       
   ArrayList<String> lines = new ArrayList();

   URL url = PokerhandTestCase.class.getClassLoader().getResource("test/TestFile.txt");
   File testFile = new File(url.getFile());
   FileReader fileReader = new FileReader(testFile);
   bufReader = new BufferedReader(fileReader);
   assertFalse("Failed to load the test file.", testFile == null);

   boolean isEOF = false;
   while (!isEOF){

        String aline = bufReader.readLine();

        if (aline == null){
            System.out.println("Done processing.");
            isEOF = true;
        }

        lines.add(aline);   
   }

   return Arrays.asList(lines); 

 }

程序的最后一行导致崩溃,我想知道从 arrayList 定义集合的正确方法是什么。这个函数需要 Collection 作为返回类型。

4

3 回答 3

3

用这个替换最后一行:

return (Collection)lines;

由于 ArrayList 实现了 Collection 接口:http ://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html

所以整体代码:

  public static Collection data() throws IOException 
  {
    ArrayList<String> lines = new ArrayList();
    // populate lines collection...
    return (Collection)lines;
  }

根据下面的评论,也许这符合“数组集合”的条件:

  public static Collection data() throws IOException 
  {
    ArrayList<String> array1 = new ArrayList();
    ArrayList<String> array2 = new ArrayList();
    ArrayList<String> array3 = new ArrayList();
    // populate lines collection...
    ArrayList<ArrayList<String>> lines = new ArrayList();
    lines.add(array1);
    lines.add(array2);
    lines.add(array3);
    return (Collection)lines;
  }
于 2013-03-22T03:30:04.843 回答
0

您要退回的收藏品必须是Collection<Object[]>. 您正在返回一个集合。你需要做这样的事情(一个完整的例子):

@RunWith(Parameterized.class)
public class MyTest {
    @Parameters
    public static Collection<Object[]> data() throws IOException {
        List<Object[]> lines = new ArrayList<>();

        File testFile = new File("/temp/TestFile.txt");
        FileReader fileReader = new FileReader(testFile);
        BufferedReader bufReader = new BufferedReader(fileReader);
        Assert.assertFalse("Failed to load the test file.", testFile == null);

        boolean isEOF = false;
        while (!isEOF) {
            String aline = bufReader.readLine();

            if (aline == null) {
                System.out.println("Done processing.");
                isEOF = true;
            }

            lines.add(new Object[] { aline });
        }

        return lines;
    }

    private final String file;

    public MyTest(String file) {
        this.file = file;
    }

    @Test
    public void test() {
        System.out.println("file=" + file);
    }

}

请注意,您没有在此处关闭文件,而是在列表末尾添加了一个无用的空值,但我复制了您的代码:-)。

于 2013-03-22T06:57:36.253 回答
0

ArrayList 行 = new ArrayList(); ...返回 Arrays.asList(lines);

这返回二维数组。

这个函数需要 Collection 作为返回类型。

我认为 user1697575 的回答是正确的。

于 2013-03-22T04:02:10.667 回答