2014-12-31 31 views
-4

我需要創建一個List<File> files,以便它包含3個虛擬文件。我怎麼做?如何在Java中創建虛擬文件列表?

我需要單元測試。

我做

private File file1 = mock(File.class); 
private File file2 = mock(File.class); 
private File file3 = mock(File.class); 

List<File> files = Lists.newArrayList(file1, file2, file3); 

但我認爲是爲所有可能在同一行。

+2

爲什麼會有人低估這個問題,太簡單的問題會導致downvoted?這個問題是具體的,我看不出有什麼理由可以倒下。 –

+1

我沒有downvote,但沒有努力是一個downvote的原因,你應該先努力嘗試。 –

+0

你可以這樣做:List files = Lists.newArrayList(mock(File.class),mock(File.class),mock(File.class)); – Dmitry

回答

0

是的,你可以做一個行:

List<File> files = Lists.newArrayList(mock(File.class), mock(File.class), mock(File.class)); 

但我不知道這是一個很好的解決方案。 java.io.File是不可變的,所以它是非常沒用的。我會建議使用空,如果你沒有實際的文件的路徑(即使文件不存在,則個體經營)

0

如果你只是想創建任意文件,那麼你可以做這樣的事情:

final List<File> files = Stream.generate(() -> mock(File.class)).limit(3).collect(toList()); 

但是顯然你不能在這些嘲諷等方面殘留任何方法。所以根據你想要做什麼,你的原始方法可能會更有用。

2

我會建議不要嘲笑File,而是做出假的價值觀。作用於File實例的方法傾向於關注文件路徑和/或文件是否存在,因此最直接的方法是使用實​​例。

下面是使用JUnit4是創建三個File實例的列表來指代不,做了目錄中存在的文件的例子:

@RunWith(JUnit4.class) 
public class ExampleTest { 
    @Rule 
    public TemporaryFolder testFolder = new TemporaryFolder(); 

    private final Foo foo = new Foo(); 

    @Test 
    public void shouldFailIfFilesDoNotExist() { 
    List<File> files = Lists.newArrayList(
     testFolder.newFile(), 
     testFolder.newFile(), 
     testFolder.newFile()); 
    foo.doIt(files); 
    } 
} 

如果你關心的文件名,你可以通過文件的名稱爲TemporaryFolder.newFile(String)