Как сделать интеграционное тестирование в .NET с реальными файлами?

У меня есть некоторые классы, которые реализуют некоторую логику, связанную с файловой системой и файлами. Например, я выполняю следующие задачи как часть этой логики:

проверка, имеет ли определенная папка определенную структуру (например, она содержит подпапки с конкретными именами и т. д.)загрузка некоторых файлов из этих папок и проверка их структуры (например, это некоторые файлы конфигурации, расположенные в определенном месте в определенной папке)загрузить дополнительные файлы для тестирования / проверки из файла конфигурации (например, этот файл конфигурации содержит информацию о других файлах в той же папке, которые должны иметь другую внутреннюю структуру и т. д.)

Теперь вся эта логика имеет некоторый рабочий процесс, и исключения генерируются, если что-то не так (например, файл конфигурации не найден в определенном месте папки). Кроме того, естьСтруктура управляемой расширяемости (MEF) участвует в этой логике, потому что некоторые из этих файлов, которые я проверяю, являются управляемыми DLL, которые я загружаю вручную в агрегаты MEF и т. д.

Сейчас я'Я хотел бы проверить все это каким-то образом. Я думал о создании нескольких физических тестовых папок на жестком диске, которые охватывают различные тестовые случаи, а затем запускают мой код для них. Я мог бы создать, например:

папка с правильной структурой и все файлы действительныпапка с правильной структурой, но с неверным файлом конфигурациипапка с правильной структурой, но с отсутствующим файлом конфигурации и т. д.

Будет ли это правильный подход? Я не уверен, хотя, как именно запустить мой код в этом сценарии ... Я, конечно, неНе хочу запускать все приложение и указать его, чтобы проверить эти макеты папок. Должен ли я использовать какие-то рамки модульного тестирования, чтобы написать видмодульные тесты », что выполняет мой код против этих объектов файловой системы?

В целом, является ли все это правильным подходом для подобных сценариев тестирования? Есть ли другие лучшие подходы?

Ответы на вопрос(5)

Ваш ответ на вопрос