【问题标题】:Navigate to Specflow step from within Step Definitions从步骤定义中导航到 Specflow 步骤
【发布时间】:2016-08-07 20:40:45
【问题描述】:

所以我有一些测试,我在步骤中重复使用了步骤。

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

这是一个例子:

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

如何导航到这些内部步骤之一?

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

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

【问题讨论】:

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

标签: specflow


【解决方案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();
     }
}

当您这样安排步骤实现时,其他步骤的重用会容易得多。

【讨论】:

  • 我完全同意,我正在重写测试,我希望有一个快捷方式来导航到该步骤,但现在似乎不行。
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
相关资源
最近更新 更多