Как настроить тестовый проект (пространства имен, полезные вспомогательные объекты и т. Д.)? - PullRequest
1 голос
/ 16 декабря 2010

Моя команда пытается настроить некоторые правила для автоматического тестирования. В частности, нас интересует, какие типы классов будут существовать в нашем тестовом проекте, как будут настроены пространства имен и т. Д. Это то, что мы придумали до сих пор.

Вид из обозревателя решений

  • Проект: MyProject.Testing
    • Папка: Функциональность A
      • Класс: TestFixture1
      • Класс: TestFixture2
    • Класс: ConstantManager
    • Класс: StateManager
    • Класс: EntityBuilder
    • Класс: ScenarioBuilder

У меня есть тестовые устройства, организованные по функциям. По сути, это имитирует мои пространства имен основного решения, поэтому, если у меня есть что-то вроде MyProject.Dao в качестве пространства имен в моем основном проекте, в моем проекте тестирования у меня есть MyProject.Testing.Dao.

Я также добавил несколько вспомогательных классов.

  • ConstantManager : хранит идентификаторы базы данных и т. Д. Для многоразовых констант, необходимых во время испытаний
  • StateManager : Управляет сбросом состояния перед каждым тестом (может быть замена файла, модифицированного тестом, на исходный, сброс БД и т. Д.)
  • EntityBuilder : Создает экземпляры сущностей нашего домена, которые можно использовать для тестирования
  • ScenarioBuilder : берет объекты из EntityBuilder и объединяет их в сценарии, которые можно использовать повторно для нескольких тестов. Например, это может быть заполнение дерева или установка определенных свойств и т. Д. Я думаю, что ScenarioBuilder унаследует EntityBuilder (или, возможно, заменит EntityBuilder в целом)

Хотя я показал, что ConstantManager, EntityBuilder и ScenarioBuilder находятся непосредственно в проекте тестирования, на самом деле могут быть конкретные определения этих классов для каждой функции (например, в соответствии с Функциональностью A), если ситуация вызывает ее.

Итак, что я делаю неправильно и что я должен делать? Спасибо!

1 Ответ

3 голосов
/ 16 декабря 2010

Возможно, вы захотите постфиксировать все проекты модульных тестов с помощью .UnitTests и все проекты интеграционных тестов с .IntegrationTests.Это означает, что ваш автоматизированный сервер сборки может различать, какие проекты должны быть включены в сборку CI (проекты модульного тестирования), а какие - в ночную сборку (проекты модульного тестирования и интеграционного тестирования).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...