принудительное создание/запись файла до окончания теста

#java #file #filewriter

Вопрос:

У меня есть следующий код в тесте:

 @Test
void genericTest() {
    //stuff
    createTempJsonFile(filename, body);
    func.method(filename);
    //stuff
}

private void createTempJsonFile(String filename, String body) {
        try {
            File file = new File(filename);
            FileWriter writer = new FileWriter(file);
            writer.write(body);
            writer.close();
        } catch (IOException e) {
          //stuff
        }
    }
 

Файл создан правильно. Проблема в том, что func.method не находит его, действительно, Intellij показывает мне только созданный файл (появляющийся в списке файлов) в конце выполнения теста.

Проблема не в пути к файлу, потому что при дальнейших исполнениях (когда файл уже существует, так как он был создан в конце предыдущего) тест регулярно проходит.

Мне кажется, что создание файла завершается только в конце теста, и это было бы неприемлемо, так как мне нужно работать с ним в самом тесте.

Как я могу это исправить? Есть ли способ заставить func.method ждать, пока файл не будет сгенерирован?

Комментарии:

1. Попробуйте использовать Thread.sleep (), чтобы подождать некоторое время, пока файл не будет создан(например. Поток.сон(3000)).

2. Я пытался подключиться к Thread.sleep(20000), но безуспешно.

3. Если вам требуется настроить файл для запуска теста, почему бы вам не попробовать вызвать его в аннотации @BeforeMethod вместо вашего теста? Требуется ли, чтобы этот метод был в вашем тесте?

4. Содержимое файла зависит от некоторых данных, рассчитанных в начале самого теста

5. Я думаю, что проблема должна быть в самом вашем func.методе (), можете ли вы отобразить метод?