首先,我是 SpecFlow 的新手。
我有一个功能文件,我已经/想要使用 MSTest 自动运行它作为功能测试,涉及完全设置的服务器、数据访问......
为此,我必须使用 SpecFlow 的“Given”块中的数据配置服务器,然后启动它。我还必须将一些文件复制到测试的输出目录。
在非 SpecFlow 功能测试中,我使用 ClassInitialize 属性从 TestContext 获取 TestDeploymentDir;像这样的东西:
[ClassInitialize]
public static void ClassSetup(TestContext context)
{
TargetDataDeploymentRoot = context.TestDeploymentDir;
}
现在,对于 SpecFlow,我无法再使用此属性,因为它已被 SpecFlow 本身使用。
确实存在一些新属性,例如 BeforeFeature ,其作用类似,但它不会将 TestContext 作为参数传递。
我只需要访问 TestContext 的 TestDeploymentDir,以便在真正启动我的功能测试服务器之前复制一些文件 - 没有 SpecFlow 可以轻松完成,但使用 SpecFlow 几乎不可能。
如何处理这个问题?
有可能吗?
非常感谢您的建议!
robert
环境:
自 SpecFlow 2.2.1 起,TestContext 可通过上下文注入获得。 (https://github.com/techtalk/SpecFlow/pull/882 https://github.com/techtalk/SpecFlow/pull/882)
您可以直接从容器中获取它:
ScenarioContext.Current.ScenarioContainer.Resolve<Microsoft.VisualStudio.TestTools.UnitTesting.TestContext>()
或通过上下文注入:
public class MyStepDefs
{
private readonly TestContext _testContext;
public MyStepDefs(TestContext testContext) // use it as ctor parameter
{
_testContext = testContext;
}
[BeforeScenario()]
public void BeforeScenario()
{
//now you can access the TestContext
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)