У меня есть некоторые классы, которые реализуют некоторую логику, связанную с файловой системой и файлами. Например, я выполняю следующие задачи в рамках этой логики:
- проверка, имеет ли определенная папка определенную структуру (например, она содержит подпапки с конкретными именами и т.д.)
- загрузка некоторых файлов из этих папок и проверка их структуры (например, это некоторые файлы конфигурации, расположенные в определенном месте в определенной папке)
- загрузить дополнительные файлы для тестирования/проверки из файла конфигурации (например, этот файл конфигурации содержит информацию о других файлах в той же папке, которые должны иметь другую внутреннюю структуру и т.д.)
Теперь вся эта логика имеет некоторый рабочий процесс, и исключения генерируются, если что-то не так (например, файл конфигурации не найден в определенном месте папки). Кроме того, в эту логику вовлечена платформа управляемой расширяемости (MEF), поскольку некоторые из этих файлов, которые я проверяю, являются управляемыми библиотеками DLL, которые я вручную загружаю в агрегаты MEF и т. Д...
Теперь я хотел бы проверить все это каким-то образом. Я думал о создании нескольких физических тестовых папок на жестком диске, которые охватывают различные тестовые случаи, а затем запускают мой код для них. Я мог бы создать, например:
- папка с правильной структурой и всеми действующими файлами
- папка с правильной структурой, но с неверным файлом конфигурации
- папка с правильной структурой, но без файла конфигурации и т.д...
Будет ли это правильный подход? Однако я не уверен, как именно запустить мой код в этом сценарии... Я, конечно, не хочу запускать все приложение и указывать на него, чтобы проверить эти макеты папок. Должен ли я использовать какую-то инфраструктуру модульного тестирования для написания своего рода "модульных тестов", которые выполняют мой код для этих объектов файловой системы?
В целом, является ли все это правильным подходом для подобных сценариев тестирования? Есть ли другие лучшие подходы?