Структурирование проектов и решений в системе контроля версий Team Foundation Server (TFS) - Хранение модульных тестов

ОГЛАВЛЕНИЕ

 

Хранение модульных тестов

Модульные тесты можно сохранять в папке UnitTests и располагать ее на одном уровне с папкой Source, как показано ниже:


/MyApp1                         // Содержит файл MyApp1.sln
    /Source                     // Папка-контейнер всего исходного кода
        /ClassLibrary1          // Содержит ClassLibrary1.csproj
        /MyApp1Web              // Содержит Default.aspx
    /UnitTests                  // Папка-контейнер модульных тестов
        /ClassLibrary1Tests     // Содержит проект тестирования и исходный код тестов
        /MyApp1WebTests         // Содержит проект тестирования и исходный код тестов

При таком сценарии модульные тесты выносятся отдельно от всего исходного кода. Однако происходит это за счет совместимости на уровне проектов. Вот альтернативная структура:

/MyApp1 
    /Source
        /ClassLibrary1
        /ClassLibrary1Tests
        /MyApp1Web
        /MyApp1WebTests

За и против каждого из подходов:

UnitTests на одном уровне с папкой Source

За: Все модульные тесты находятся в одном месте.
За: Поставляемый код располагается отдельно от кода, который поставляться не будет.
За: Процесс сборки может без труда выполнить все модульные тесты во всех проектах.
Против: Разработчикам сложнее выполнять модульное тестирование только для своего проекта.
Против: Модульные тесты не включаются в ответвления папки Source.

UnitTests в каждом проекте

За: Разработчики могут без труда выполнять модульные тесты для отдельного проекта.
За: При ветвлении, папки с модульными тестами включаются в структуру папок создаваемой ветви. Таким образом, модульные тесты могут сохранять тесную связь с исходным кодом в каждой ветви.
Против: Происходит смешение поставляемого кода и кода тестов в папке исходного кода.
Против: Обычно сложнее выполнить модульное тестирование сразу по всем проектам во время сборки.