代码之家  ›  专栏  ›  技术社区  ›  Nandakumar1712

如何在specflow测试中读取测试运行设置参数值?

  •  1
  • Nandakumar1712  · 技术社区  · 7 年前

    我们使用。visual studio中用于运行specflow测试的runsettings文件。在这里,我们配置了某些参数。我需要在运行时访问这些参数值,以便在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测试的测试运行设置文件中读取值?有没有其他方法可以访问runsettings参数?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Andreas Willich    7 年前

    因为它们在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

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