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

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

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

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

@первый

@first @second

@второй

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

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


person MichaelF    schedule 14.11.2011    source источник


Ответы (1)


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

@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 шагами.

person perfectionist    schedule 26.01.2012
comment
Да, вот что происходит. Я спрашивал об этом пару раз и забыл указать здесь эту деталь. Но вы правы, это то, что я делаю, так как у меня есть две среды, в которых я хочу запустить тесты, но они имеют разные конфигурации, мне нужно будет изучить данные шаги, но тесты в обеих средах абсолютно одинаковы. и то, как я пытался, казалось самым простым. - person MichaelF; 27.01.2012
comment
Я действительно пытаюсь получить практические знания о specflow. Если вы хотите еще раз рассказать о своей проблеме в виде новых вопросов или дополнений к этой, я буду рад поделиться идеями. - person perfectionist; 27.01.2012