У нас часто бывают тесты Fitnesse, которые проходят индивидуально, но не проходят при запуске в составе пакета (или наоборот).
Это связано с тем, что некоторые настройки остаются после каждого теста. Есть ли способ указать Fitnesse использовать новый поток / процесс / что угодно перед запуском каждого теста, чтобы тесты гарантированно вели себя одинаково в обоих случаях.
В настоящий момент мы используем результаты Suite на нашем сервере непрерывной интеграции, а это означает, что тесты, которые не работают по отдельности, могут пройти до наших выпусков. Это заставляет нас нервничать!
В приведенном ниже примере AlarmDefintionSet является родительским объектом AlarmDefinition. AlarmDefinitionSetSetUpFixture создает AlarmDefinitionSet и сохраняет его в памяти. AlarmDefinitionFixture находит родительский элемент в памяти (это может быть идентификатор, но в приведенном ниже примере он использует значение по умолчанию), устанавливает его как свойство, а затем устанавливает свойства Code, InitialWTGStopped и RunAlarm. Затем он вызывает методы Valid и ValidationMessage в качестве теста.
Этот тест отлично работает при запуске в составе пакета или отдельно. Однако, если бы я удалил AlarmDefinitionSetSetUpFixture, он потерпел бы неудачу при запуске самостоятельно, так как не смог бы найти подходящего родителя. Однако, если он был запущен как часть пакета, и более ранний тест включал AlarmDefinitionSetSetUpFixture, то он пройдет. Это небольшое упрощение, но оно иллюстрирует важные моменты. Я мог бы использовать файл Fitnesse «[SuiteName] .SetUpFixture» для вызова метода, который очищает все из памяти, и мы действительно можем это сделать. Потребуется много работы, чтобы добавить такой файл во все наши наборы, а также убедиться, что методы, которые он вызывает, правильно удаляют все из памяти.
Все приспособления в этом примере подходят.
Спасибо ...