Specflow 3和nunit我在做什么错?

时间:2019-04-12 20:05:34

标签: c# visual-studio-2017 nunit specflow

我正在尝试使用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#项目吗?

5 个答案:

答案 0 :(得分:1)

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

  1. 自从我们使用MSTest以来,我们安装了以下与MSTest有关的nuget软件包(MSTest.TestAdapter&MSTest.TestFramework),并且还具有SpecFlow.MsTest。我继续从nuget软件包管理器及其依赖项中卸载了所有这些nugetpackages。
  2. 现在单独安装SpecRun.Runner软件包,这将反过来拉扯其其他依赖项。如下面突出显示的,它也具有SpecRun.NUnit包。 enter image description here

现在重新构建项目,您应该能够看到在Test Explorer窗口中编写的Specflow测试。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

确保您包含以下Nuget库:

  • Microsoft.NET.Test.Sdk
  • NUnit
  • SpecFlow
  • SpecFlow.NUnit
  • SpecFlow.Tools.MsBuild.Generation

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

  

{       “ bindingCulture”:       {           “ language”:“ zh-cn”       },       “语言”:       {           “功能”:“ zh-cn”       },       “插件”:[]   }

...,您应该会很好。

答案 4 :(得分:0)

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

  • NUnit
  • NUnit3TestAdapter
  • SpecFlow
  • SpecFlow.Nunit
  • SpecFlow.Tools.MsBuild.Generation

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

根据spcflow文档https://specflow.org/2019/updating-to-specflow-3/

将此目标添加到项目文件中

Target xml code snippet

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