FeatureContext.Current静态访问器不能用于多线程执行

时间:2016-10-06 11:46:08

标签: specflow

在运行两个不同功能文件的情况时,我收到以下错误: 初始化方法ITTCustomerScenarios.Features.ValidateTheJAMCMSKULicensingFeature.TestInitialize引发异常。 TechTalk.SpecFlow.SpecFlowException:TechTalk.SpecFlow.SpecFlowException:FeatureContext.Current静态访问器不能用于多线程执行。尝试将特征上下文注入绑定类。有关详细信息,请参阅http://go.specflow.org/doc-multithreaded

虽然我能够从visual studio运行不同功能文件的场景,但不能从mstest运行。 我用于使用mstest从命令行运行sceanrios的命令是: mstest /testcontainer:"test.dll" /类别:mytest的

test1.feature @mytest 场景:验证登录  鉴于我访问主页  .....  ......

test2.feature @mytest 场景:验证注销  鉴于我访问主页  .....  ......

请建议我如何从命令行运行不同功能文件的方案。

4 个答案:

答案 0 :(得分:1)

找到一个可能对某些人有用的链接here TLDR:“这里的解决方案是明确重新生成所有要素文件。”

答案 1 :(得分:0)

将您的Specflow版本和生成器版本更新为以下版本 SpecFlow版本:2.1.0.0(或最新) SpecFlow Generator版本:2.0.0.0(或最新版本)

显式重新生成所有feature.cs文件。

这将为您工作。 :)

答案 2 :(得分:0)

我通过将上下文注入构造函数中来解决了相同的问题,如下所示。我猜这个问题在更新后就变成了。因为ScenarioContext.Current现在已过时。

    private readonly ScenarioContext Context;

    public WikipediaTitleValidationSteps(ScenarioContext catalogContext)
    {
        Context = catalogContext;
    }

答案 3 :(得分:-2)

如果您按照错误消息中的链接进行操作,则说明如何解决该问题。