Может ли Fitnesse использовать новый процесс для каждого теста в пакете

У нас часто бывают тесты Fitnesse, которые проходят индивидуально, но не проходят при запуске в составе пакета (или наоборот).

Это связано с тем, что некоторые настройки остаются после каждого теста. Есть ли способ указать Fitnesse использовать новый поток / процесс / что угодно перед запуском каждого теста, чтобы тесты гарантированно вели себя одинаково в обоих случаях.

В настоящий момент мы используем результаты Suite на нашем сервере непрерывной интеграции, а это означает, что тесты, которые не работают по отдельности, могут пройти до наших выпусков. Это заставляет нас нервничать!

В приведенном ниже примере AlarmDefintionSet является родительским объектом AlarmDefinition. AlarmDefinitionSetSetUpFixture создает AlarmDefinitionSet и сохраняет его в памяти. AlarmDefinitionFixture находит родительский элемент в памяти (это может быть идентификатор, но в приведенном ниже примере он использует значение по умолчанию), устанавливает его как свойство, а затем устанавливает свойства Code, InitialWTGStopped и RunAlarm. Затем он вызывает методы Valid и ValidationMessage в качестве теста.

Этот тест отлично работает при запуске в составе пакета или отдельно. Однако, если бы я удалил AlarmDefinitionSetSetUpFixture, он потерпел бы неудачу при запуске самостоятельно, так как не смог бы найти подходящего родителя. Однако, если он был запущен как часть пакета, и более ранний тест включал AlarmDefinitionSetSetUpFixture, то он пройдет. Это небольшое упрощение, но оно иллюстрирует важные моменты. Я мог бы использовать файл Fitnesse «[SuiteName] .SetUpFixture» для вызова метода, который очищает все из памяти, и мы действительно можем это сделать. Потребуется много работы, чтобы добавить такой файл во все наши наборы, а также убедиться, что методы, которые он вызывает, правильно удаляют все из памяти.

Пример фитнес-теста

Все приспособления в этом примере подходят.

Спасибо ...


person cedd    schedule 14.01.2013    source источник
comment
Во-первых, я предполагаю, что вы имеете в виду, что тестируемая система остается после пробного запуска, и это вызывает проблемы. Я бы подумал, что это под вашим контролем, поскольку именно ваш код фикстуры взаимодействует с тестируемой системой. Я бы изучил ваш код устройства, чтобы найти возможности для очистки ссылок и отправки сигналов выключения. Во-вторых, способ, которым FitNesse будет сигнализировать о вашем приспособлении, различается в зависимости от используемой тестовой системы и типов используемых вами приспособлений. Не могли бы вы рассказать больше об используемых вами светильниках?   -  person Dan Woodward    schedule 15.01.2013
comment
@DanWoodward: Надеюсь, я кое-что прояснил!   -  person cedd    schedule 16.01.2013


Ответы (1)


Короткий ответ - нет настройки FitNesse, чтобы каждый тест был независимым. Вы должны сами позаботиться об этом. Иногда я использую страницу SetUp, которая включается в начало каждой тестовой страницы, чтобы выполнить приспособление, обеспечивающее чистую среду для каждого теста.

person Mike Stockdale    schedule 17.03.2013
comment
Спасибо, Майк. Я боялся, что это так. - person cedd; 19.03.2013