2016-02-17 8 views
1

Я добавил Specflow/Specrun в существующий проект тестирования модулей (на основе XUnit 2.0) в Visual Studio 2015.Почему Specflow пытается выполнить один и тот же сценарий несколько раз?

Когда я пытаюсь выполнить один сценарий, кажется, он пытается выполнить одно и то же 4 раза. Вот вывод на консоль:

Scenario: Add true/false question in AddTrueFalseQuestion -> Succeeded on thread #0 
Scenario: Add true/false question in AddTrueFalseQuestion -> Failed on thread #0 
    [ERROR] Trace listener failed. -> The ScenarioContext.Current static accessor cannot be used in multi-threaded execution. Try injecting the scenario context to the binding class. See http://go.specflow.org/doc-multithreaded for details. 
Scenario: Add true/false question in AddTrueFalseQuestion -> Failed on thread #0 
    [ERROR] Trace listener failed. -> The ScenarioContext.Current static accessor cannot be used in multi-threaded execution. Try injecting the scenario context to the binding class. See http://go.specflow.org/doc-multithreaded for details. 
Scenario: Add true/false question in AddTrueFalseQuestion -> Failed on thread #0 
    [ERROR] Trace listener failed. -> The ScenarioContext.Current static accessor cannot be used in multi-threaded execution. Try injecting the scenario context to the binding class. See http://go.specflow.org/doc-multithreaded for details. 
Result: 1 failed 
    Total: 2 (test executions: 4) 
    Succeeded: 1 
    Ignored: 0 
    Pending: 0 
    Skipped: 0 
    Failed: 1 

Что я пробовал:

  • Я искал, чтобы проверить, если какой-либо файл в проекте есть ссылка на ScenarioContext.Current, в соответствии с указанной выше ошибки но ничего не нашли

  • Профиль тестирования default.sprofile specflow имеет следующую конфигурацию, но не уверен, что он соблюдается:

    < Execution stopAfterFailures="3" testThreadCount="1" testSchedulingMode="Sequential" />

  • Я даже попытался добавить следующее App.config в случае, если что-то в XUnit вмешивался, но безрезультатно:

    <add key="xunit.maxParallelThreads" value="1"/>

    <add key="xunit.parallelizeTestCollections" value="false"/>

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

PS: Это происходит только после добавления Specflow/Specrun в существующий проект тестирования модулей. Я создал несколько проектов со стороны в отдельных решениях, в которых установлен specflow, и они отлично работали.

ответ

3

SpecRun - это TestRunner, специализирующийся на SpecFlow. Таким образом, он заменяет XUnit Runner.

Проверки неудачных тестов контролируются конфигурацией retryCount раздела Execution. См. SRProfile-Documentation здесь: http://www.specflow.org/plus/documentation/SpecFlowPlus-Runner-Profiles/

К сценариюContext.Current errors: Вы обновили все свои файлы * .feature.cs? С SpecFlow 2.0 произошли некоторые изменения сгенерированного кода, поэтому их необходимо восстановить.

+0

Я установил 'retryFor =" None "'. Однако тест на самом деле не сработает. Он всегда преуспевает, и он по-прежнему пытается повторить попытку, а затем по какой-то причине он не справляется с этими исключениями прослушивателя трассировки. Для файлов * .feature.cs я просто удалил их и снова их автогенерировал. – PhD