Вы не должны издеваться над IO, потому что считаете, что вам нужно неукоснительно следовать какой-то догме модульного тестирования, найденной в какой-то книге. Вы издеваетесь над ними, когда замечаете некоторые реальные проблемы с кодом ввода-вывода в своих тестах, которые могут быть
ваши тесты становятся настолько медленными, что вы не можете запускать их так часто, как вам хотелось бы
вы не можете легко заставить исходный код ввода-вывода обращаться к определенным файлам и папкам с вашими тестовыми данными
Таким образом, единственная «лучшая практика» здесь — не придерживаться какого-то карго-культа, а написать тест, который нужно написать, независимо от того, является ли он модульным тестом в строгом смысле или нет.
Предположим, вы заметили одну из вышеперечисленных проблем, подход, описанный в вашем вопросе, в порядке, хотя детали могут различаться в зависимости от того, сколько методов ввода-вывода необходимо вызвать, зависят ли они друг от друга, просто ли они читают данные или создают данные и структуры папок. Если проблема заключается только в производительности, и вы можете свободно выбирать место хранения и не нуждаетесь в большом количестве сохраняемых тестовых данных, вы также можете рассмотреть возможность использования какой-либо файловой системы на основе Ram для тестирования.
Рекомендуем прочитать: Путь Тестивуса — Меньше догмы модульного тестирования — Больше кармы модульного тестирования
Рекомендую посмотреть эти видео для лучшего погружения в вопрос: