Как передать временную папку методу, который принимает файл как параметр (JUNIT) - PullRequest
0 голосов
/ 03 августа 2020

У меня есть метод, который принимает файл в качестве параметра, я хочу протестировать его с помощью временного каталога @Rules

Вот мой метод:

    public void processFiles(final File folder)
    {
        
        File[] fileNames = folder.listFiles();
        List<String> lines = new ArrayList<>();
        boolean isFirstFile = true;
        try
        {
            for (File file : fileNames)
            {
                    List<String> list = readContent(file);
                    list.forEach(i -> lines.add(i));
                     
                }
        }catch (IOException e)
        {
            e.printStackTrace();
        }
    }

И вот как я хочу протестировать:

 @Rule
 public TemporaryFolder folder = new TemporaryFolder();

 @Test
 public void test() throws IOException {
        
        final File tempFile = temporaryFolder.newFile("tempFile.txt");
        final File tempFile2 = temporaryFolder.newFile("tempFile.txt");
     

        FileUtils.writeStringToFile(tempFile, "content1", "ISO-8859-1");
        
        FileUtils.writeStringToFile(tempFile2, "content2", "ISO-8859-1");
        
        
         //Here I get an error because the parameter should be of type File and not TemporaryFolder 
        listFilesService.processFiles (temporaryFolder);
      
    }

Можете ли вы помочь мне понять, как я должен это правильно кодировать Заранее большое спасибо

1 Ответ

1 голос
/ 03 августа 2020

Вы должны использовать метод TemporaryFolder.get Root () . Тогда ваш тест будет выглядеть следующим образом:

@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();

@Test
public void test() throws IOException {

    final File tempFile = temporaryFolder.newFile("tempFile.txt");
    final File tempFile2 = temporaryFolder.newFile("tempFile2.txt");


    FileUtils.writeStringToFile(tempFile, "content1", "ISO-8859-1");

    FileUtils.writeStringToFile(tempFile2, "content2", "ISO-8859-1");


    // Pass the root of the TemporaryFolder which is of type File
    processFiles(temporaryFolder.getRoot());

}

Это можно проверить как работающее, добавив System.out.println(file.getName()); в for l oop из processFiles. Результат вышеуказанного теста:

tempFile.txt
tempFile2.txt
...