1

我们在 Visual Studio 中使用 .runsettings 文件来运行 specflow 测试。我们在那里配置了某些参数。我需要在运行时访问这些参数值以在 specflow 测试方法中使用。我尝试通过 TestContext 访问这些,如下所示

 [ClassInitialize]
    public static void Initialize(TestContext testContext)
        {            
            var value= 
            Convert.ToString(testContext.Properties["testParameter1"]);
        }

我在运行时遇到了 testcontext 实例的异常,如下所示。“System.NullReferenceException:'对象引用未设置为对象的实例。'”

环境 Visual Studio Enterprise 2017 Specflow 2.2.1 单元测试提供程序:MsTest

此代码在 Microsoft 单元测试项目中使用时运行良好。如何从测试运行设置文件中读取值以进行 specflow 测试?还有其他方法可以访问运行设置参数吗?

4

1 回答 1

3

因为它们在 TestContext 上,所以您需要它的实例。

您可以通过 DI 获得它:

[When(@"I do something")]
public void WhenIDoSomething()
{
    var textContext = ScenarioContext.Current.ScenarioContainer.Resolve<Microsoft.VisualStudio.TestTools.UnitTesting.TestContext>();
}

完整示例:https ://github.com/techtalk/SpecFlow/blob/master/Tests/TechTalk.SpecFlow.Specs/Features/MsTestProvider.feature#L43

但请注意,它目前在 BeforeScenario 挂钩中不起作用(https://github.com/techtalk/SpecFlow/issues/936

于 2017-12-13T13:36:12.763 回答