Запись содержимого в TemporaryFolder и удаление файла после теста - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь записать некоторые строки в файл, созданный TemporaryFolder.Мне нужно предоставить 3 строки: Line1 a Line2 b c Line 3

1) Я делаю это, но это ничего не добавляет.Длина testedContent равна 0. Что я делаю неправильно?:

private ContentFileRetriever contentFileRetriever = new ContentFileRetrieverService();

    @Rule
    public TemporaryFolder tempFolder = new TemporaryFolder();

    @Before
    public void setup() {
    }

    @Test
    public void getContentFile() throws IOException {
        File textFile = tempFolder.newFile("testText.txt");
        String pathFile = textFile.getPath();
        FileWriter fileWriter = new FileWriter(textFile.getName());
        fileWriter.write("Line1 a");
        fileWriter.write("Line2 b c");
        fileWriter.write("Line3 3");
        String[] testedContent = contentFileRetriever.getContentFile(pathFile);
        String[] expected = {"Line1 a", "Line2 b c", "Line 3"};
        assertArrayEquals(expected, testedContent);
    }

2) Должен ли я сделать это в настройке с помощью метода @Before или сделать это внутри теста?

3) Я прочитал, что эта папка будет удалена автоматически, поэтому я ненужно выполнить .deleteOnExit() на textFile?

1 Ответ

0 голосов
/ 18 апреля 2019

Я вижу две проблемы:

  1. Вы открываете свой объект FileWriter с именем файла вместо самого файла
  2. Вы не закрываете FileWriter

Это работает для меня:

  @Test
  public void getContentFile() throws IOException {
    File textFile = tempFolder.newFile("testText.txt");
    FileWriter fileWriter = new FileWriter(textFile);
    fileWriter.write("Line1 a");
    fileWriter.write("Line2 b c");
    fileWriter.write("Line3 3");
    fileWriter.close();
  }
...