Как настроить иерархию пакетов FitNesse, которая допускает несколько "SuiteSetUp"?
В настоящее время у меня есть следующая структура для моего набора:
- OuterSuite
- SuiteSetUp
- InnerSuite1
- SuiteSetUp
- Test1
- Test2
- Test3
- SuiteTearDown
- InnerSuite2
- SuiteSetUp
- Test1
- Test2
- Test3
- SuiteTearDown
Я хотел бы, чтобы OuterSuite.SuiteSetUp загрузил базу данных с некоторыми базовыми тестовыми данными. Каждый из InnerSuite1.SuiteSetUp и InnerSuite2.SuiteSetUp затем слегка изменяет данные теста для своих соответствующих групп тестов. (И восстановите его до начальных значений в соответствующем SuiteTearDown.)
Но, как я выяснил, "может быть только один!" SuiteSetUp. Как бы вы хотели получить желаемое поведение?
2 ответа
Вы могли бы иметь такую структуру с помощью этого трюка.
Содержимое InnerSuite#.SuiteSetUp
!include -c <OuterSuite.SuiteSetUp
# Your original code of the suite setup
С этим потоком сначала будет запущен SuiteSetUp OuterSuite, а остальная часть контента будет запущена позже.
Эту структуру можно использовать и в SuiteTearDown, но разумно будет изменить порядок. Это может быть использовано, например, при удалении строк, у которых внешние ключи связаны со строками, которые будут удалены во внешнем разделе.
Содержание InnerSuite #.SuiteTearDown
# Your original code of the suite teardown
!include -c <OuterSuite.SuiteTearDown
Мы решили аналогичную проблему, используя Hudson для запуска определенных наборов для определенных целей.
Это работает примерно так:
- У нас есть страница BootStrap, которую мы запускаем для подготовки базы данных. Это работает как отдельная работа Хадсон. Это задание подготавливает базу данных, а затем создает ее резервную копию.
- Затем, когда мы запускаем наши наборы, мы делаем восстановление базы данных перед каждым набором.
- После восстановления базы данных запустите пакет. Мы запускаем основные комплекты отдельно, чтобы принудительно очистить базу данных, поскольку мы не можем сейчас поддерживать откат БД.
Этот подход не идеален, но он позволяет нам лучше управлять базой данных.