【问题标题】:I cannot get specflow's code behind files to regenerate我无法在文件后面获取 specflow 的代码以重新生成
【发布时间】:2020-01-01 05:27:04
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我遇到了与 Specflow 类似的问题 |单元。将选项设置为“True”解决了该问题。导航工具 > 选项 > Specflow > 常规 > 旧版 > 启用 SpecFlowSingleFileGenerator
    【解决方案2】:

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

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

    1. 从所有 *.feature 文件中删除“specflowsinglefilegenerator”自定义工具参考(之前...)(之后...)
    2. 删除当前 *.feature.cs 文件对应于您的 *.feature 文件
    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 文件应该会自动生成。

    【讨论】:

    • 您还必须添加 SpecFlow.Tools.MsBuild.Generation nuget 包
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      要使用带有 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 的包文件夹。
      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-13
        • 2010-12-16
        • 2020-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-13
        • 2018-04-03
        相关资源
        最近更新 更多