Есть ли другой способ получить имя функции в SpecFlow C # без использования Context? - PullRequest
1 голос
/ 02 апреля 2019

Я использую Имя функции и детали шага в ExtentReports.Когда я выполняю индивидуальный тест, он работает нормально.Если я попытаюсь выполнить тест в параллельном режиме, это ошибка Throwing, мы не должны использовать Context в многопоточности.

1 Ответ

2 голосов
/ 02 апреля 2019

Вы можете использовать контекст сценария и контекст функции в параллельном выполнении.Но вам нужно получить его через 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

...