上下文菜单中缺少 Specflow 生成步骤定义

Specflow Generate Step Definition is missing from the context menu

我右键单击我的特征文件,我应该可以看到生成步骤定义的选项。它不在上下文菜单中。 我进行了搜索,它说要为 nunit 安装 specrun。 我尝试通过管理 NuGet 包安装 SpecRun.Nunit。

我收到错误:

Severity    Code    Description Project File    Line    Suppression State
Error       Unable to load the service index for source 
http://packagesource.
An error occurred while sending the request.
The remote name could not be resolved: 'packagesource'          0   

我安装了 Visual Studio Enterprise 2017。 我已经安装了 Selenium-webdriver,Specflow

请问如何解决这个问题,谢谢。

您需要从菜单项工具 -> "Extensions and Updates..."

安装 specflow nuget 包以及 Visual Studio 集成包

这是使该选项出现在 VS2019 的上下文菜单中所必须执行的操作。

  1. 我正常安装了 Specflow,从 Extensions-> Manage Extensions, 然后搜索 Visual Studio 2019 的 Specflow。
  2. 安装包并重新启动 VS。
  3. 然后我创建了一个新项目,一个 C# 测试。
  4. 初始设置准备就绪后,从 解决方案资源管理器我去了 "Add->New Item..." 并选择了“SpecFlow 特征文件”,我在我的特征文件中输入了我想要的信息。
  5. 在任何 Gherkin 行上,我右键单击以获取上下文 菜单并选择 "Go to Definition"。显示一个对话框,告诉我 没有匹配项,但我可以将这些行保存在剪贴板中。我 选择是。
  6. 然后再次在解决方案资源管理器上(如第 4 步),右键单击 "Add->New Item...",但现在选择了 "SpecFlow Step Definition"。这 步骤定义将用于计算器测试。

技巧来了:

  • 删除所有步骤,将主要 class 留空。

像这样:

using System;
using TechTalk.SpecFlow;

namespace SpecflowFirst
{
    [Binding]
    public class SpecFlowFeature1Steps
    {

    }
}
  • 然后将您从对话框中获得的片段粘贴到主窗口中 class

像这样:

using System;
using TechTalk.SpecFlow;

namespace SpecflowFirst
{
    [Binding]
    public class SpecFlowFeature1Steps
    {
        [Given(@"I navigated to the github login page")]
        public void GivenINavigatedToTheGithubLoginPage()
        {
            ScenarioContext.Current.Pending();
        }
    }
}

这将触发编译错误。如果您指向 "ScenarioContext" 中的错误并执行 "Show potential fixes",其中一个修复方法是安装 "Sprecflow extension"。有了这个,您就可以安装其余的集成,它现在将在上下文菜单中显示该选项。

这解决了我的问题,现在我可以在上下文菜单中看到 "Generate Step Definitions"

我遵循了 Kyon 的出色演练,但这对我不起作用。即使 SpecFlow 已正确安装,它也无法识别以下库,或对“修复此问题”提出任何建议:

using TechTalk.Specflow

然后我注意到,对于 brand-new MsTest 项目和最新的 VS2019(截至 2020 年 10 月),您需要安装稍微更早 的版本SpecFlow(v2.1 与 v2.4 相比)。

因此,如果您在显示这个虚幻的“生成步骤定义”菜单项时也遇到问题,请检查您的 Dependencies\Packages 是否有感叹号。