2017-04-03 93 views
0

我有一个Specflow场景,通过我们的应用程序中的向导运行,并创建一个表单,很像用户会。我们称这个场景为A.使用Specflow行在整个Specflow场景中运行?

现在,我需要创建另一个场景,它将创建的表单填充到/提交它。我们称之为场景B.

为了能够运行方案B,我需要方案A首先运行。有没有办法在方案B中使用关键字Background运行整个方案A?还是有另一种方法来做到这一点?

回答

1

您可以拨打步骤形成其他的步骤,让你的方式做你想做的是创造它调用的所有步骤,包括那些在后台步:

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"); 
    } 
} 
+0

请不要这样做。在步骤中调用步骤对于基于Cucumber的框架来说是不好的做法。相反,使辅助函数:'iHaveDoneThis();另一件事(); thisOtherThing();' –

+0

@KyleFairns你可以扩展你为什么认为这种不好的做法?不是说我反对助手功能本身,但我不确定为什么它的不好的练习 –

+0

问题很难追查,它实际上使维护更困难。相反,使用助手方法。 看看[这个讨论](https://groups.google.com/forum/#!msg/cukes/Zi5IIAr4dJg/S9A0cnNc0G4J),它会解释更多。 在实践中,你不会因为这样做而出现任何错误,但是当它在步骤(等)失败的步骤内的某个步骤内到达某个步骤时 - 必须沿着兔子洞找到为什么它失败了。创建帮助函数可以使代码更易于维护。 –