Это именно то, что вам определенно необходимо для тестирования интеграции, поскольку в реальных файловых системах наблюдается довольно странное поведение (например, из-за того, что Windows не позволяет удалять файл, если какой-либо процесс, включая средство удаления, открывает его).
Таким образом, подход TDD заключается в том, чтобы сначала написать интеграционный тест (строго говоря, TDD не имеет четких понятий «модульный тест» и «интеграционный тест»; это всего лишь тесты). Вполне вероятно, что этого будет достаточно; так что работа сделана, остановись, иди домой .
Если нет, то возникнет некоторая внутренняя сложность, которую непросто адекватно протестировать, упорядочив файлы. В этом случае вы просто снимаете эту сложность, помещаете ее в класс и пишете модульные тесты для этого класса . Вполне вероятно, что вы обнаружите, что этот общий класс можно использовать и в базе данных, и в файле XML, и в других случаях.
Ни в коем случае вы бы не взяли основное ядро кода, который вы пишете, и «смоделировали» его, чтобы написать тесты, которые пройдут независимо от того, является ли тестируемый модуль неправильным.