如何在 hook 中使用 ScenarioStepContext?

How to use ScenarioStepContext in hook?

我正在将 SpecFlow 与 NUnit3 结合使用,并试图访问挂钩中的步骤上下文。

我是运行并行测试,所以不使用任何静态实例上下文,而是使用 SpecFlow 的参数解析功能。

使用如下所示的挂钩,ScenarioContext 实例可以正常解析,但 ScenarioStepContext 导致绑定抛出错误:

Primitive types or structs cannot be resolved: TechTalk.SpecFlow.Bindings.StepDefinitionType (resolution path: TechTalk.SpecFlow.ScenarioStepContext->TechTalk.SpecFlow.StepInfo)'

[AfterStep]
public void LogStepResult(ScenarioStepContext scenarioStepContext,
    ScenarioContext scenarioContext)
{
}

发现它隐藏在一些文档中...

您可以在 StepContext 属性:

中使用已解析 ScenarioContext 附带的 ScenarioStepContext,而不是尝试解析 ScenarioStepContext
[AfterStep]
public void LogStepResult(ScenarioContext scenarioContext)
{
    var stepContext = scenarioContext.StepContext;
}

如果您没有在测试中使用并行执行,那么您可以直接调用 ScenarioContext。这是一个example。如果您是 运行 并行测试,那么您可以使用以前的答案。