How to read test run settings parameter value in specflow tests?

做~自己de王妃 提交于 2019-12-02 15:51:11

问题


We use .runsettings file in visual studio for running specflow tests. There we have certain parameters configured. I need to access those parameter values at run time to use in specflow test methods. I tried accessing those via TestContext as below

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

I am getting the exception for testcontext instance at run time as below. "System.NullReferenceException: 'Object reference not set to an instance of an object.'"

Environment Visual Studio Enterprise 2017 Specflow 2.2.1 Unit Test Provider: MsTest

This code worked fine while using it in the Microsoft Unit Test project. How to read values from Test Run Settings file for specflow tests? Is there any other way to access runsettings parameters?


回答1:


As they are on the TestContext, you need the instance of it.

You can get it via DI:

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

Complete example: https://github.com/techtalk/SpecFlow/blob/master/Tests/TechTalk.SpecFlow.Specs/Features/MsTestProvider.feature#L43

But be aware, that it currently doesn't work in a BeforeScenario hook (https://github.com/techtalk/SpecFlow/issues/936)



来源:https://stackoverflow.com/questions/47791016/how-to-read-test-run-settings-parameter-value-in-specflow-tests

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!