我无法在文件后面获取Specflow的代码以重新生成

时间:2019-08-28 03:36:13

标签: visual-studio specflow test-explorer feature-file

当我编辑 specflow 功能文件测试时,它不会更新代码隐藏文件。 当我尝试通过右键单击项目并选择'Regenerate Feature Files'手动重新生成代码隐藏文件时,出现错误:

  

错误:在此系统上找不到自定义工具'specflowsinglefilegenerator'

我发现这通常意味着我没有安装Specflow扩展名。但是,当我在Visual Studio中查看“扩展和更新”时,可以看到已安装'Specflow for Visual Studio 2017'

如果有人知道我能做什么,那将非常有帮助。 当我将存储库重新克隆到新文件夹时,此操作开始。

我也尝试过清理和重建。关闭Visual Studio。卸载并重新安装Specflow Extension。从Visual Studio从2019切换到2017。重新启动计算机。更新规格流程。删除specflow缓存文件并强制文件重新生成。 我仍然没有更改代码隐藏文件。

4 个答案:

答案 0 :(得分:5)

在Visual Studio中,我选择:工具>选项> Specflow。 然后将“启用SpecFlowSingleFileGenerator自定义工具”设置为True。

但是,这是一个旧设置,我想尝试找到一种使用MSBuild的方法。

答案 1 :(得分:1)

要将旧版 Specflow v2.4.1 与 MSTest 结合使用,您只需执行以下操作:

在 Visual Studio 中设置此选项:

enter image description here

为您的特征文件设置 CustomTool 属性:

enter image description here

在您的测试项目的 App.Config 中有以下标记:

<specFlow>
  <unitTestProvider name="MsTest" />
</specFlow>

添加对 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 的引用,如下图所示:

enter image description here

确保您在测试项目中添加了以下两个 nuget 包:

  1. SpecFlow by TechTalk v2.4.1
  2. SpecRun.Runner by TechTalk v1.1.0

enter image description here

然后尝试重新生成功能文件。如果这不起作用,请在执行以下步骤后再次尝试上述步骤:

  1. 关闭 Visual Studio
  2. 删除用于 nuget 的包文件夹。
  3. 删除 binobj 文件夹。
  4. 打开您的解决方案并运行干净的解决方案。
  5. 恢复nuget包
  6. 重建解决方案

下面的链接是很好的阅读来了解规范流代码生成的东西:

https://docs.specflow.org/projects/specflow/en/latest/Tools/Generate-Tests-From-MsBuild.html https://docs.specflow.org/projects/specflow/en/latest/Installation/Unit-Test-Providers.html

答案 2 :(得分:0)

我有同样的问题。当我将specflow升级到3.0.213时,没有生成feature.cs和测试。然后,我使用了this MSBUild示例和最新的specflow来生成feature.cs和测试资源管理器中的测试。它使用MSTest作为测试运行程序。

答案 3 :(得分:0)

这些是我从使用旧的“ specflowsinglefilegenerator”切换为生成* .feature.cs文件到在构建测试项目时使它们自动更新所必须采取的步骤。

Specflow's website中描述了该过程,但是图片有助于理解该过程。

  1. 从所有* .feature文件中删除“ specflowsinglefilegenerator”自定义工具参考(之前...)Before Change(之后...)After change
  2. 删除与您的* .feature文件Delete *.feature.cs files对应的当前* .feature.cs文件
  3. 至少将Specflow升级到3.0.188。下面为我​​工作。我正在将NUnit用于我的测试框架。 MS Test Explorer需要NUnit3TestAdapter才能识别测试。 (以下必须具有:NUnit,NUnit3TestAdapter,Specflow,Selenium.Webdriver),Selenium.Support,enter image description here enter image description here enter image description here
  4. 将specflow.json文件添加到包含您的specflow功能文件(* .feature)的项目中enter image description here enter image description here
  5. 现在尝试重建您的解决方案。重建时,* .feature.cs文件应该自动生成。