为什么Specflow会多次尝试执行相同的场景?

时间:2016-02-17 02:29:16

标签: multithreading visual-studio specflow xunit.net specrun

我已将Specflow / Specrun添加到Visual Studio 2015中的现有单元测试项目(基于XUnit 2.0)。

当我尝试执行单个场景时,似乎尝试执行相同的操作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,根据上述错误但未找到任何内容

  • specflow的default.sprofile测试配置文件具有以下配置,但不确定是否遵守:

    < 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的单独解决方案中创建了侧面的多个项目,并且它们工作正常。

1 个答案:

答案 0 :(得分:3)

SpecRun是专门用于SpecFlow的TestRunner。所以它取代了XUnit Runner。

使用“执行”部分的retryCount配置控制失败测试的重试次数。请参阅此处的SRProfile-文档:http://www.specflow.org/plus/documentation/SpecFlowPlus-Runner-Profiles/

到ScenarioContext.Current错误:您是否重新生成了所有* .feature.cs文件?使用SpecFlow 2.0,生成的代码有一些变化,因此必须重新生成它们。