Зависимости от файловой системы здесь бывают двух видов:
- файлы, от которых зависят ваши тесты; если вам нужны файлы для запуска теста, вы можете сгенерировать их в своих тестах и поместить в каталог
/tmp
.
- файлы, от которых зависит ваш код: файлы конфигурации или входные файлы.
Во втором случае часто можно реструктурировать ваш код, чтобы удалить зависимость от файла (например, java.io.File можно заменить на java.io.InputStream
и java.io.OutputStream
и т. Д.). возможно конечно.
Вам также может понадобиться обработать «недетерминированность» в файловой системе (у меня был чертовски задаток, отлаживающий что-то в NFS). В этом случае вам, вероятно, следует обернуть файловую систему в тонкий интерфейс.
В самом простом случае, это всего лишь вспомогательные методы, которые принимают файл и перенаправляют вызов в этот файл:
InputStream getInputStream(File file) throws IOException {
return new FileInputStream(file);
}
Затем вы можете заменить его на макет, который вы можете указать, чтобы сгенерировать исключение, или вернуть ByteArrayInputStream
или что-то еще.
То же самое можно сказать о URL и URI.