Так что, если вы тестируете свой код модулем, вам не нужно иметь дело с вводом / выводом, поскольку Файловая система является внешним ресурсом , и вам следует использовать 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) .