【发布时间】:2012-08-31 15:04:06
【问题描述】:
首先我是 SpecFlow 的新手。
我有一个功能文件,我有/想要使用 MSTest 自动运行它作为功能测试,涉及完全设置的服务器、数据访问...... 为此,我必须使用 SpecFlow 的“给定”块中的数据配置服务器,然后再启动它。我还必须将一些文件复制到测试的输出目录。
在非 SpecFlow 功能测试中,我使用 ClassInitialize 属性从 TestContext 获取 TestDeploymentDir;像这样:
[ClassInitialize]
public static void ClassSetup(TestContext context)
{
TargetDataDeploymentRoot = context.TestDeploymentDir;
}
现在有了 SpecFlow,我不能再使用这个属性了,因为它是由 SpecFlow 本身使用的。 确实存在一些新属性,例如 BeforeFeature,它的作用类似,但它没有将 TestContext 作为参数传递。
我只需要访问 TestContext 的 TestDeploymentDir 以便在真正启动我的功能测试服务器之前复制一些文件 - 没有 SpecFlow 很容易做到,但使用 SpecFlow 几乎不可能。
如何处理这个问题?
有可能吗?
非常感谢您的建议!
罗伯特
环境:
- Visual Studio 2012
- SpecFlow 1.9.0.77
【问题讨论】:
-
您可以使用 specflow 从您的功能文件生成 MSTest 测试:stackoverflow.com/questions/2984318/…
-
感谢您的回复。我已经从我的功能文件生成 MSTest 测试,但如上所述,我无法访问 TestContext。
-
也许AssemblyInitialize 可以适用于您的场景,specflow 不要使用它。否则,使用当前
MsTestGeneratorProvider生成的功能文件,您无法获得提供的TestContext。但是,您可以从MsTestGeneratorProvider派生并生成将TestContext存储在 specflow 内某处的测试。 -
感谢您的建议。听起来肯定不错 - 我很快就会试一试。
-
在哪里可以找到这个 MsTestGeneratorProvider?可以举个例子吗?
标签: c# mstest visual-studio-2012 specflow