在SpecFlow Step Binding类中访问TestContext

Dev*_*ind 3 mstest specflow

是否可以从SpecFlow(1.7.1)步骤绑定类中访问MSTest TestContext?在生成的特征文件代码中有一个方法FeatureSetup,它将TestContext作为参数,但显然不对它做任何事情.

sig*_*ige 6

我找到了一种方法将参数传递给TestContext,然后从SpecFlow访问它们.

通过添加一个具有TestContext属性并将其AssemblyInit()方法标记为[AssemblyInitialize]的[TestClass],使其在runnig测试之前得到初始化,并且MSTest将能够填充TestContext.

{
    [TestClass]
    public class InitializeTestContext
    {
        public static TestContext Context { get; private set; }

        [AssemblyInitialize]
        public static void AssemblyInit(TestContext context)
        {
            Context = context;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后可以从我的BaseSteps类访问它:

{
            public abstract class BaseSteps : TechTalk.SpecFlow.Steps
            {
                public string GetTestEnvironment()
                {
                    TestContext testContext = InitializeTestContext.Context;

                    string testEnvironment = testContext.Properties["Environment"].ToString();

                    return testEnvironment;
                }
            }
}
Run Code Online (Sandbox Code Playgroud)