我对specflow 3和nunit做错了什么?

问题描述 投票:0回答:6

我正在尝试使用 Visual Studio 2017 在 C# 中设置一个基本项目,该项目使用 specflow 3 和 nunit 运行测试。我之前使用过 Specflow 版本 2.4.1,设置和运行测试都很简单。然而,我在尝试使用 nunit 设置 specflow 3 时不断收到错误。

我尝试按照此处的步骤操作:https://specflow.org/getting-started/

我得到的最远的是以下错误。

[SpecFlow] System.Exception:单元测试提供程序已设置。

我的代码也没有生成,但我已经安装了 nuget 包 SpecFlow.Tools.MsBuild.Generation ,它应该为功能文件生成后端。

有人知道如何获得一个使用 Specflow 3 和 Nunit 的 C# 项目吗?

c# visual-studio-2017 nunit specflow
6个回答
3
投票

@Nkosi - 我遇到了与您使用相同错误消息描述的相同问题。但就我而言,我使用的是 MSTest unittest 和 SpecRun.SpecFlow。这就是我解决我的问题的方法。

  1. 由于我们使用 MSTest,我们安装了以下与 MSTest 相关的 nuget 包(MSTest.TestAdapter 和 MSTest.TestFramework ),并且还安装了 SpecFlow.MsTest。我继续从 nuget 包管理器及其依赖项中卸载了所有这些 nugetpackages。
  2. 现在单独安装 SpecRun.Runner 包,这将反过来拉取其他依赖项。如下所示,它还具有 SpecRun.NUnit 包。

现在重新构建项目,您应该能够在测试资源管理器窗口中看到编写的 Specflow 测试。


2
投票

我在添加specflow.xunit nuget包和specflow+ runner nuget包时遇到了这个问题。删除specflow+运行程序包使我能够使用xunit构建和运行测试。


0
投票

检查您的 app.config 并删除引用specflow和nunit的节点。 另请转到现有的 .feature 文件,右键单击“属性”。将自定义工具留空。


0
投票

SpecFlow 3 不再使用 app.config。您需要使用强制的specflow.json 文件。

确保包含以下 Nuget 库:

  • Microsoft.NET.Test.Sdk
  • N 单位
  • 规格流程
  • SpecFlow.NUnit
  • SpecFlow.Tools.MsBuild.Generation

确保您创建了一个基本的specflow.json 文件...

{ “结合文化”: { “语言”:“en-us” }, “语言”: { “feature”:“en-us” }, “插件”:[] }

...你应该可以走了。


0
投票

@Nkosi 您可能已经安装了多个单元测试提供程序包。 删除任何与specflow相关的包,例如specflow.specrun、specrun.runner包,并确保您已经安装了以下包(如果已经存在),然后重新安装。

  • N 单位
  • NUnit3测试适配器
  • 规格流程
  • SpecFlow.Nunit
  • SpecFlow.Tools.MsBuild.Generation

并从功能文件属性的自定义工具字段中删除删除“SpecFlowSingleFileGenerator”。

按照 spcflow 文档将此目标添加到项目文件中 https://specflow.org/2019/updating-to-specflow-3/

Target xml code snippet

然后,您可以在测试资源管理器窗格中看到测试。我遇到了类似的问题,但我确实按照上面提到的方式重新安装了软件包,解决了问题。希望有帮助!。


0
投票

我昨天在 VS 2022 上遇到了同样的问题。我尝试了这个论坛和其他来源的很多东西,但只能帮助我执行以下步骤...

我已经做到了:

  1. 从项目中删除与 SpecFlow 相关的所有块
  2. 从 VS 中删除 SpecFlow 扩展
  3. 根据官方文档再次开始添加Nuget:https://docs.specflow.org/projects/specflow/en/latest/Installation/NuGet-Packages.html

由于我使用的是 C#12 /.Net8,所以我必须从官方存储库安装最新的扩展,该扩展到目前为止尚未发布(由于某些奇怪的原因):

https://github.com/SpecFlowOSS/SpecFlow/issues/2726#issuecomment-1831457636

掘金中旧的扩展版本目前还不兼容.Net8。

完成这些步骤后,解决方案开始起作用。

© www.soinside.com 2019 - 2024. All rights reserved.