mstest - 在 SpecFlow 步骤绑定(bind)类中访问 TestContext

标签 mstest specflow

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

最佳答案

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

通过添加一个具有 TestContext 属性的 [TestClass] 并将其 AssemblyInit() 方法标记为 [AssemblyInitialize],以便它在运行测试之前及早初始化,并且 MSTest 将能够填充 TestContext。

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

        [AssemblyInitialize]
        public static void AssemblyInit(TestContext context)
        {
            Context = context;
        }
    }
}

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

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

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

                    return testEnvironment;
                }
            }
}

关于mstest - 在 SpecFlow 步骤绑定(bind)类中访问 TestContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334452/

相关文章:

visual-studio - 如何为Visual Studio测试项目创建启动和清除脚本?

asp.net - 如何针对 IIS Express 站点运行集成测试?

c# - 如何从 SpecFlow 获取步骤计时信息

c# - 如何使用 SpecFlow 设置个人跟踪/日志记录

nunit - 测试失败时 Hook NUnit 或 SpecFlow

c# - 如何对一组重复的specflow语句进行分组?

mstest - 如果 [AssemblyInitialize] 已存在于 Specflow 测试项目中,则会出现错误

c# - 如何在 MSTest DataRow 中将属性作为参数传递

cucumber - 小 cucumber 规范中步骤之间的强耦合

visual-studio - 如何检查项目是否为测试项目? (NUnit、MSTest、xUnit)