Моя команда пытается настроить некоторые правила для автоматического тестирования. В частности, нас интересует, какие типы классов будут существовать в нашем тестовом проекте, как будут настроены пространства имен и т. Д. Это то, что мы придумали до сих пор.
Вид из обозревателя решений
- Проект: 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), если ситуация вызывает ее.
Итак, что я делаю неправильно и что я должен делать? Спасибо!