Файловые операции с Junit - PullRequest
0 голосов
/ 25 марта 2020

В моей программе я создаю файлы всякий раз, когда create/update/remove мои объекты отправляет информацию на существующий FTP-сервер. Для этого я создал папку, скажем, INFO_FOLDER, и я могу создать и отправить эти файлы на сервер.

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

Либо мне нужно удалить каждый файл, созданный в каждом тесте, методом @After, либо мне нужно использовать другую папку для целей модульного теста. Я не знаю, возможен ли второй вариант.

Как я могу решить эту проблему? Какой способ более элегантный? Или есть другое известное решение этой проблемы?

1 Ответ

0 голосов
/ 25 марта 2020

Так что, если вы тестируете свой код модулем, вам не нужно иметь дело с вводом / выводом, поскольку Файловая система является внешним ресурсом , и вам следует использовать Test Doubles (Mocks). Модульное тестирование - это тестирование одной изолированной вещи.

Если ваш метод просто выводит на ФС, вы можете убедиться, что указанный метод c write был вызван с Mockito.verify . Лучше написать интеграционные тесты, чтобы проверить, правильно ли интегрируются компоненты (т. Е. Ваш код с FS). Например,

Код продукции:

  public void writeToOutput(String path) {
    FS.writeOutput(path);
  }

Код тестирования:

@Test
  public void writes_to_output() {
    String path = "./sample.txt";
    FS fs = mock(FS.class);           //mock the class that writes to output

    service.writeToOutput(path);      //do the action

    verify(fs).writeOutput(path);     //verify that your FS class called writeToOutput with the given argument
  }

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

Вы никогда не запускайте тесты, которые портят ваш рабочий код (папка sr c) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...