2016-08-02 123 views
0

所以我有几个测试,我已经重复使用步骤内的步骤。导航到Specflow步骤从步骤定义

但是我现在在维护方面有一个噩梦,因为我无法轻松地在步骤之间导航。

下面是一个例子:

[Given(@"I have an order")] 
    public void GivenIHaveAnOrder() 
    { 
     Given("an open store"); 
     Given("I am an existing customer"); 
     Given("I am on homepage"); 
     When("I search for a component"); 
     When("I add the component to my basket"); 
    } 

如何浏览到这些内部步骤之一?

如果我想导航到“当(”我搜索组件“);”一步我不能。

如果我在功能文件,我可以简单地右键单击该步骤和“去定义”,但我不能这样做。有没有人有办法解决吗?

+0

我找到的唯一解决方案是使用visual studio find搜索步骤文本。 –

回答

1

我假设你正在调用Given/When-函数的步骤,因为它们在不同的绑定类中。我对吗?

有比使用这个功能更好的方法。

您是否看过驱动程序概念和上下文注入? 看一看这里:http://www.specflow.org/documentation/Context-Injection/

您对您的步骤逻辑简单地解压缩到一个驱动程序类,并在不同的步班从它那里得到一个实例:

class Driver 
{ 
    public void AnOpenStore() 
    { 
     ... 
    } 
} 

[Binding] 
public class StepClass1 
{ 
    private Driver _driver; 

    public StepClass1(Driver driver) 
    { 
      _driver = driver; 
    } 

    [Given(@"I have an order")] 
    public void IHaveAnOrder() 
    { 
      _driver.AnOpenStore(); 
    } 
} 

[Binding] 
public class StepClass2 
{ 
    private Driver _driver; 

    public StepClass2(Driver driver) 
    { 
      _driver = driver; 
    } 

    [Given(@"an open store")] 
    public void AnOpenStore() 
    { 
      _driver.AnOpenStore(); 
    } 
} 

当你安排你一步实现这样,其他步骤的重用更容易。

+0

我完全同意,即时在重写测试过程中,我希望我可以有一个快捷方式导航到步骤,但它现在似乎不正确。 – Festivejelly