Specflow功能不会自动生成CS文件,也不会在C#Nunit项目中显示为测试

时间:2019-10-21 22:20:03

标签: c# selenium nunit specflow

(为清楚起见更新了此帖子)

我无法创建一个起点C#Specflow Nunit项目(与以下在线教程和视频相反),新的specflow功能会自动生成cs文件并显示为可运行的测试。

复制步骤:

  1. 安装Visual Studio Community 2019 v16.3.5

  2. 扩展>管理扩展:安装VS 2019的Specflow(v2019.0.36.11860)。重新启动VS以在向导上接受Specflow安装。

  3. 新建项目>测试> C#单元测试项目(.Net Framework,C#,Windows,测试)。名称:myProject框架:4.7.2

  4. 删除UnitTest1.cs自动生成的项目文件

  5. 从NuGet Manager中获取解决方案,添加软件包:Specflow.NUnit v3.0.225(选择“确定”以更改解决方案,并接受软件包许可证

  6. 向项目添加两个文件夹:Features,StepBindings

  7. “功能”文件夹中的新项目:Specflow功能文件(类型:Visual C#项),名称为myFeature.feature

结果: 新的绿色myFeature.feature文件下没有自动生成的功能CS文件

解决方案警告:在此系统上找不到自定义工具'SpecFlowSingleFileGenerator'。 (文件:myFeature.feature)

注意:在“工具”>“选项”>“ Specflow”下,“启用SpecFlowSingleFileGenerator”设置为False

  1. 在myFeature.feature中右键单击一个步骤>生成步骤定义>在StepBindings文件夹中另存为'myFeatureSteps.cs' 结果:解决方案警告:ScenarioContext.Current已过时(文件:myFeature.feature第12、18、24行)

  2. View-Test Explorer

结果:未显示测试,包括单击“全部运行”(触发构建/发现测试/在解决方案中运行)时

进一步的探索步骤:

  1. (必需?)添加了nuGet软件包:NUnit3TestAdapter v3.15.1

  2. 将nuGet软件包NUnit更新为v3.12.0

  3. 重建的项目,在testexplorer中单击runAll,重新启动Visual Studio

最终结果:运行程序中仍未显示任何测试,并且自动生成的代码仍显示错误(ScenarioContext.Current)

packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BoDi" version="1.4.1" targetFramework="net472" />
<package id="Gherkin" version="6.0.0" targetFramework="net472" />
<package id="MSTest.TestAdapter" version="1.3.2" targetFramework="net472" />
<package id="MSTest.TestFramework" version="1.3.2" targetFramework="net472" />
<package id="NUnit" version="3.12.0" targetFramework="net472" />
<package id="NUnit3TestAdapter" version="3.15.1" targetFramework="net472" />
<package id="SpecFlow" version="3.0.225" targetFramework="net472" />
<package id="SpecFlow.NUnit" version="3.0.225" targetFramework="net472" />
<package id="System.Reflection.Emit" version="4.3.0" targetFramework="net472" />
<package id="System.Reflection.Emit.Lightweight" version="4.3.0" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.4.0" targetFramework="net472" />
<package id="System.ValueTuple" version="4.4.0" targetFramework="net472" />
<package id="Utf8Json" version="1.3.7" targetFramework="net472" />
</packages>

注意:顶部包元素下划线标有“未声明”?

尝试使项目正常运行的代码: https://github.com/bobjames238745/getSpecflowWorkingWithNunit

1 个答案:

答案 0 :(得分:0)

查看完NuGet软件包后,需要先安装SpecFlow.Tools.MsBuild.Generation软件包,然后才能在内部创建feature.cs文件。