Как тестировать логику работы с файловой системой (C#) - CodeHelper

Как тестировать логику работы с файловой системой (C#)

1

Есть класс, осуществляющий операции с файловай системой. Кроме непосредственной записи и чтения из файлов, этот класс содержит некоторую логику — проверку валидности имен и т.п. Как правильно организовать тестирование такого класса? Нужно ли строить абстракцию поверх стандартного в .NET механизма работы с файлами? Или имеются готовые библиотеки-обертки для этих целей?

Лучший ответ:

1

Вот статья по поводу: File and File Container Wrapper Library on CodePlex. Вольный перевод:

Некоторое время назад мы говорили об обертках над объеками файловой системы и тестировании этого дела на ALT.NET mailing list. Этот вопрос связан с тестированием работы с файлами без непосредственного обращения к этим файлам (ведь всем известно, что модульные тесты не должны зависить от внешних объектов). Было бы очень классно иметь обетки над объектами ФС. Это позволило бы

  • забыть о необходимости написания собственных оберток;
  • использовать Rhino Mocks (или любой подобный фреймворк) чтобы генерировать заглушки для тестов.

Я создал проект, реализующий эту идею, и теперь он размещен на CodePlex. Проект включает интерфейсы (IFile и IFileContainer), представляющие абстракции над любым типом объекта файловой системы - файлом или контейнером файлов. Можно использовать dependency injection (DI), чтобы передавать конкретные реализации этих интерфейсов в соответствующие сервисы/объекты, а для тестов использовать заглушки.

Есть 3 конкретные реализации (см. FileStrategyLib.dll) для

  • файлов (IFile)
  • папок (IFileContainer)
  • и zip-архивов (IFileContainer + SharpZipLib).

Также в решении есть проект с 10-ю модульными тестами, покрывающими всю логику на 97%.

Итак,

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.