2012-05-15 2 views
2

я в настоящее время имеют следующую структуру для моего набора:Как настроить иерархию пакетов FitNesse, которая позволяет использовать несколько «SuiteSetUp»?

  • OuterSuite
    • SuiteSetUp
    • InnerSuite1
      • SuiteSetUp
      • Test1
      • TEST2
      • TEST3
      • SuiteTearDown
    • InnerSuite2
      • SuiteSetUp
      • Тест1
      • Test2
      • Test3
      • SuiteTearDown

Я хотел бы иметь OuterSuite.SuiteSetUp загрузить базу данных с некоторыми базовыми данными теста. Каждый из InnerSuite1.SuiteSetUp и InnerSuite2.SuiteSetUp слегка изменил бы тестовые данные для своих соответствующих групп тестов. (И верните его исходным значениям в соответствующем SuiteTearDown.)

Но, как я выяснил, «может быть только один!» SuiteSetUp. Как бы вы хотели добиться желаемого поведения?

ответ

0

Мы решили аналогичную проблему, используя Hudson для запуска конкретных наборов для определенных целей.

Он работает немного как это:

  1. У нас есть Bootstrap страницу, которую мы запускаем, чтобы подготовить базу данных. Это выполняется как отдельная работа Хадсона. Эта работа готовит базу данных, а затем поддерживает ее.
  2. Затем, когда мы запускаем наши апартаменты, мы делаем восстановление базы данных перед каждым пакетом.
  3. После восстановления базы данных запустите пакет. Мы запускаем основные пакеты отдельно, чтобы принудительно очистить базу данных, поскольку мы не можем поддерживать откаты DB сейчас.

Этот подход не идеален, но он позволяет нам лучше управлять базой данных.

0

У вас может быть такая структура с помощью этого трюка.

Содержание 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 
+0

Привет, прежде всего, извините, я не заметил этого ответа до сих пор. Если бы я непосредственно запускал OuterSuite, не запускался бы OuterSuite.SuiteSetUp дважды? –

+0

@EmilBadh: Самый простой способ решить вашу проблему - переименовать страницу OuterSuite.SuiteSetUp в другое место и убедиться, что ее свойство типа страницы установлено на статическую страницу. Затем добавьте директиву include на страницы SuiteSetUp для InnerSuite1 и 2, указав на недавно переименованную страницу. Если общая страница настройки не называется SuiteSetUp, то FitNesse не будет запускать ее автоматически как часть набора; он будет запускаться только как часть страниц SuiteSetUp InnerSuite1 и 2, потому что он включен в эти страницы. –

Смежные вопросы