17

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

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

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

如果有人知道我能做什么,那将非常有帮助。这始于我将存储库重新克隆到一个新文件夹中。

我也尝试过清理和重建。关闭视觉工作室。卸载并重新安装 Specflow 扩展。从 2019 年到 2017 年从 Visual Studio 切换。重新启动我的电脑。更新规范流。删除 specflow 缓存文件并强制文件重新生成。我仍然没有更改代码隐藏文件。

4

4 回答 4

33

在 Visual Studio 中,我选择了:工具 > 选项 > Specflow。然后将 Enable SpecFlowSingleFileGenerator Custom Tool 设置为 True。

然而,这是一个遗留设置,我想尝试找到一种使用 MSBuild 的方法。

于 2019-08-28T04:13:29.703 回答
2

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

Specflow 的网站上描述了该过程,但图片有助于理解该过程。

  1. 从所有 *.feature 文件中删除“specflowsinglefilegenerator”自定义工具参考(之前...)变更前 (之后...)改变后
  2. 删除与您的 *.feature 文件对应的当前 *.feature.cs 文件删除 *.feature.cs 文件
  3. 至少将 Specflow 升级到 3.0.188。以下对我有用。我正在为我的测试框架使用 NUnit。MS Test Explorer 需要 NUnit3TestAdapter 来识别测试。(下面的必备有:NUnit、NUnit3TestAdapter、Specflow、Selenium.Webdriver)、Selenium.Support、 在此处输入图像描述在此处输入图像描述 在此处输入图像描述
  4. 将 SpecFlow.Tools.MsBuild.Generation NuGet 包添加到您的项目中。这个包用于生成 SpecFlow 的代码隐藏文件。
  5. 将 specflow.json 文件添加到包含您的 specflow 功能文件 (*.feature) 的项目中在此处输入图像描述 在此处输入图像描述
  6. 现在尝试重建您的解决方案。重建时,您的 *.feature.cs 文件应该会自动生成。
于 2019-09-02T21:08:19.827 回答
1

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

于 2019-08-29T13:32:56.160 回答
1

要在 MSTest 中使用旧版 Specflow v2.4.1,您需要执行以下操作:

在 Visual Studio 中设置此选项:

在此处输入图像描述

为您的功能文件设置CustomTool属性:

在此处输入图像描述

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

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

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

在此处输入图像描述

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

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

在此处输入图像描述

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

  1. 关闭 Visual Studio
  2. 删除用于 nuget 的 packages 文件夹。
  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

于 2021-02-26T11:35:40.817 回答