是否有其他方法可以在不使用上下文的情况下在SpecFlow C#中获取功能名称?

时间:2019-04-02 07:36:29

标签: c# specflow parallel-extensions

我在ExtentReports中使用功能名称和步骤详细信息。当我执行单个测试时,它工作正常。如果我尝试并行执行测试,这是抛出错误,则不应在多线程中使用上下文。

1 个答案:

答案 0 :(得分:2)

您可以在并行执行中使用场景上下文和功能上下文。但是您需要通过DI来获取它,而不要使用静态的Current属性。

这里是使用DI获取ScenarioContext的示例。


[Binding]
public class StepsWithScenarioContext
{
    private readonly ScenarioContext scenarioContext;

    public StepsWithScenarioContext(ScenarioContext scenarioContext)
    {
        this.scenarioContext = scenarioContext;
    }

    [BeforeScenario()]
    public void GivenIPutSomethingIntoTheContext()
    {
        var title = this.scenarioContext.ScenarioInfo.Title;
        //....
    }
}

文档在这里:https://specflow.org/documentation/Parallel-Execution/-线程安全的ScenarioContext,FeatureContext和ScenarioStepContext