Подтвердить что ты не робот

Unit test наилучшая практика при тестировании класса, который читает и записывает в файловую систему

У меня есть класс, который выполняет операции с файлом на диске. Более точно он перемещается по каталогу, читает все файлы с заданным суффиксом и выполняет некоторые операции над данными, а затем выводит их в новый файл.

Я немного сомневаюсь в том, как создать unittest для этого класса. Я думаю, что метод установки создает временный каталог и временные файлы в /tmp/somefolder, но я подозреваю, что это плохая идея по нескольким причинам (разработчики используют окна, разрешения файлов и т.д.).

Еще одна идея заключалась в том, чтобы издеваться над классами, которые я использую для записи и чтения на диск, путем инкапсуляции классов с использованием интерфейса, а затем предоставления макетного объекта, но он кажется немного беспорядочным.

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

4b9b3361

Ответ 1

Ваша стратегия правильная, ИМО. Просто убедитесь, что не жестко задайте каталог temp. Используйте System.getProperty("java.io.tmpdir"), чтобы получить путь к каталогу temp, и используйте окончательный блок в вашем тесте или метод @After для очистки созданных файлов и каталогов после завершения теста.

Ответ 2

Если вы используете JUnit 4.7 и выше, вы можете использовать правило @TemporaryFolder, чтобы прозрачно получить временную папку, которая должна автоматически очищаться после каждого тест.

Ответ 3

Издеваться над всем можно, но, вероятно, гораздо больше усилий, чем стоит. Вы можете использовать временный каталог, поставляемый с Java System.getProperty( "java.io.tmpdir" ), который вы должны иметь возможность писать и т.д., Независимо от того, в какой системе вы находитесь. Придерживайтесь коротких имен файлов, и вы будете в безопасности, даже если работаете на чем-то древнем.