使用Specflow行在整个Specflow场景中运行?
问题描述:
我有一个Specflow场景,通过我们的应用程序中的向导运行,并创建一个表单,很像用户会。我们称这个场景为A.使用Specflow行在整个Specflow场景中运行?
现在,我需要创建另一个场景,它将创建的表单填充到/提交它。我们称之为场景B.
为了能够运行方案B,我需要方案A首先运行。有没有办法在方案B中使用关键字Background
运行整个方案A?还是有另一种方法来做到这一点?
答
您可以拨打步骤形成其他的步骤,让你的方式做你想做的是创造它调用的所有步骤,包括那些在后台步:
Backgroud:
Given I have done this
Scenario:
Given another thing
And this other thing
,那么你可以创建一个像这样的步骤
[Binding]
public class MySteps: Steps //<- this is important if you want to reuse steps
{
Given("I have done eveything")]
public void GiveIHaveDoneEverything()
{
Given("I have done this");
Given("another thing");
Given("this other thing");
}
}
请不要这样做。在步骤中调用步骤对于基于Cucumber的框架来说是不好的做法。相反,使辅助函数:'iHaveDoneThis();另一件事(); thisOtherThing();' –
@KyleFairns你可以扩展你为什么认为这种不好的做法?不是说我反对助手功能本身,但我不确定为什么它的不好的练习 –
问题很难追查,它实际上使维护更困难。相反,使用助手方法。 看看[这个讨论](https://groups.google.com/forum/#!msg/cukes/Zi5IIAr4dJg/S9A0cnNc0G4J),它会解释更多。 在实践中,你不会因为这样做而出现任何错误,但是当它在步骤(等)失败的步骤内的某个步骤内到达某个步骤时 - 必须沿着兔子洞找到为什么它失败了。创建帮助函数可以使代码更易于维护。 –