我正在尝试使用 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# 项目吗?
@Nkosi - 我遇到了与您使用相同错误消息描述的相同问题。但就我而言,我使用的是 MSTest unittest 和 SpecRun.SpecFlow。这就是我解决我的问题的方法。
现在重新构建项目,您应该能够在测试资源管理器窗口中看到编写的 Specflow 测试。
我在添加specflow.xunit nuget包和specflow+ runner nuget包时遇到了这个问题。删除specflow+运行程序包使我能够使用xunit构建和运行测试。
检查您的 app.config 并删除引用specflow和nunit的节点。 另请转到现有的 .feature 文件,右键单击“属性”。将自定义工具留空。
SpecFlow 3 不再使用 app.config。您需要使用强制的specflow.json 文件。
确保包含以下 Nuget 库:
确保您创建了一个基本的specflow.json 文件...
{ “结合文化”: { “语言”:“en-us” }, “语言”: { “feature”:“en-us” }, “插件”:[] }
...你应该可以走了。
@Nkosi 您可能已经安装了多个单元测试提供程序包。 删除任何与specflow相关的包,例如specflow.specrun、specrun.runner包,并确保您已经安装了以下包(如果已经存在),然后重新安装。
并从功能文件属性的自定义工具字段中删除删除“SpecFlowSingleFileGenerator”。
按照 spcflow 文档将此目标添加到项目文件中 https://specflow.org/2019/updating-to-specflow-3/
然后,您可以在测试资源管理器窗格中看到测试。我遇到了类似的问题,但我确实按照上面提到的方式重新安装了软件包,解决了问题。希望有帮助!。
我昨天在 VS 2022 上遇到了同样的问题。我尝试了这个论坛和其他来源的很多东西,但只能帮助我执行以下步骤...
我已经做到了:
由于我使用的是 C#12 /.Net8,所以我必须从官方存储库安装最新的扩展,该扩展到目前为止尚未发布(由于某些奇怪的原因):
https://github.com/SpecFlowOSS/SpecFlow/issues/2726#issuecomment-1831457636
掘金中旧的扩展版本目前还不兼容.Net8。
完成这些步骤后,解决方案开始起作用。