我正在尝试进行一些初始设置,从而为特定功能下的场景设置环境。我将设置数据汇总到一个单独的类中。我添加了一个specflow挂钩文件,并对其进行了修改,使其可以用作以前的功能挂钩。然后我尝试使用上下文注入。在I中,我为BeforeScenario挂钩文件创建了安装程序类的私有变量和构造函数(采用安装程序类的对象)。
我面临的问题是,按照规范流程,BeforeFeature方法必须为静态方法。而且,如果我将我的私有安装程序类设为静态,则不会调用构造函数。
我在做什么对吗?或者甚至有可能我正在尝试做什么?
[Binding]
public class BeforeFeature
{
private static SetUp setUp;
public BeforeFeature(SetUp setUpObject)
{
setUp = setUpObject;
}
[BeforeFeature]
public static void RunBeforeFeature()
{
//Some processing.
setUp.baseDir = "some data";
setUp.status = "some data"
}
}
您可以告诉SpecFlows上下文注入框架,当Step类在其构造函数中要求实例时,应使用该对象。可以像示例中所示:
[Binding]
public class BeforeFeature
{
private readonly IObjectContainer objectContainer;
private static SetUp setUp;
public BeforeFeature(IObjectContainer container)
{
this.objectContainer = objectContainer;
}
[BeforeFeature]
public static void RunBeforeFeature()
{
//Some processing.
setUp.baseDir = "some data";
setUp.status = "some data"
}
[BeforeScenario]
public void RunBeforeScenario()
{
objectContainer.RegisterInstanceAs<SetUp>(setUp);
}
}
您在场景而不是功能之前进行设置,但是如果仅创建SetUp
一次并在中设置其值,[BeforeFeature]
那么您应该在每种情况下都获得相同的实例,因此在那里所做的任何修改都应该保留(假设这是您想要的,否则只是SetUp
在BeforeScenario
方法中创建一个新的)
现在,只要您的Step类SetUp
在构造函数中要求一个实例,它们就应该获得放置在容器中的实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句