2014-12-31 2 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

Зачем кому-то делать это, слишком простые вопросы qetting downvoted? Вопрос специфичен, и я не вижу причин для понижения. –

+1

Я не спускал вниз, но при этом не прилагая никаких усилий, это причина, связанная с нисходящим движением, сначала вы должны попробовать. –

+0

Вы можете сделать это как: Список 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)

Смежные вопросы