При запуске нескольких тегов с помощью NUnit Console Runner и SpecFlow я получаю неверные результаты - PullRequest
0 голосов
/ 14 ноября 2011

Это продолжение моих предыдущих вопросов по настройке тегов: Могу ли я использовать теги в SpecFlow для определения подходящей среды для использования? и настройки переменных из этих тегов: Как настроить переменную URL для использования в платформе NUnit / SpecFlow

Я настроил некоторые переменные, чтобы помочь заполнить мои тесты NUnit, но я обнаружил, что когда бегун NUnit находит тест, который соответствует первому тегу, тест запускает его с настройками второго тега. Поскольку теги важны для меня, чтобы не только знать, какой тест нужно запустить, но и какие переменные использовать, это вызывает у меня проблемы.

Так что, если у меня есть следующие теги:

@ первый

@first @second

@ второй

Если я запускаю @second, все в порядке. Если я запускаю @first, я получаю любой сценарий, который имеет только @first штраф, но когда дело доходит до сценариев, где у меня есть оба @first @second, сценарий запускается, потому что @first есть, однако он использует параметры для @second , Так как я запускаю DLL через NUnit-Console, а тесты пишутся через SpecFlow, я не уверен, в чем проблема.

У кого-нибудь есть советы по настройке тестов для запуска таким образом?

1 Ответ

1 голос
/ 27 января 2012

Вы не очень конкретны, но, похоже, у вас есть файл функций, подобный этому:

@first
Scenario: A - Something Specific happens under the first settings
    Given ...etc...

@second
Scenario: B - Something Specific happens under the second settings
    Given ...etc...

@first @second
Scenario: C - Something general happens under the first and second settings
    Given ...etc...

Похоже, что вы выбираете тесты для запуска в NUnit, запустив все тесты в "первой" категории.

Если вы настроите определения событий следующим образом:

[BeforeFeature("first")] 
public static string FirstSettings() 
{ ... }

[BeforeFeature("second")] 
public static string SecondSettings() 
{ ... }

Если вы выполните сценарий C, тогда FirstSettings() и SecondSettings() будут выполнены перед ним. Это независимо от того, использовали ли вы категорию @second, чтобы выбрать тест для запуска в NUnit.

Это почти наверняка причина того, что вы видите вторые настройки, примененные к вашему тесту с обоими тегами - я ожидаю, что вторые настройки перезапишут первые, верно?

Мой единственный совет по настройке подобных тестов заключается в том, что привязка событий и т. Д. К определенным тегам может быть полезной, но должна использоваться как можно меньше. Вместо этого сделайте ваши индивидуальные определения шагов многократно используемыми и настройте тестовую среду, где это возможно, с помощью Given шагов.

...