是否可以模拟文件列表?

时间:2014-02-09 13:16:01

标签: java unit-testing mocking mockito jfilechooser

我正在尝试模拟已选择了多个文件的JFileChooser。目前我有一个嘲笑的文件。

在for循环中,selctedFiles变量尚未初始化。我想循环几个文件。我正朝着正确的方向前进吗?

@Test
public void testValidateFile()
{
    String name = this.getName();
    System.out.println("Test case Name = " + name);

    JFileChooser fileChooser = mock(JFileChooser.class);
    when(fileChooser.showOpenDialog(masterView.getContentPane())).thenReturn(0);
    when(fileChooser.getSelectedFiles()).thenReturn(new File("/myImages/IMG_0037.JPG"));

    for (File currentFile : selectedFiles) {
        System.out.println(currentFile.getName());
    }
}

1 个答案:

答案 0 :(得分:2)

根据文档,JFileChooser.getSelectedFiles()会返回File数组(不是File列表)。即使它是一个列表,您也不需要模拟列表本身。您只需使用包含File个对象的普通列表并模拟JFileChooser即可返回该列表。在这种情况下,您使用File数组。

首先创建File数组:

File[] files = { new File("f1"), new File("f2"), new File("f3") };

然后模拟JFileChooser对象:

JFileChooser fileChooser = mock(JFileChooser.class);
when(fileChooser.getSelectedFiles()).thenReturn(files);

然后你可以循环遍历fileChooser返回的数组:

for (File currentFile : fileChooser.getSelectedFiles()) {
    //...
}