(为清楚起见更新了此帖子)
我无法创建一个起点C#Specflow Nunit项目(与以下在线教程和视频相反),新的specflow功能会自动生成cs文件并显示为可运行的测试。
复制步骤:
安装Visual Studio Community 2019 v16.3.5
扩展>管理扩展:安装VS 2019的Specflow(v2019.0.36.11860)。重新启动VS以在向导上接受Specflow安装。
新建项目>测试> C#单元测试项目(.Net Framework,C#,Windows,测试)。名称:myProject框架:4.7.2
删除UnitTest1.cs自动生成的项目文件
从NuGet Manager中获取解决方案,添加软件包:Specflow.NUnit v3.0.225(选择“确定”以更改解决方案,并接受软件包许可证
向项目添加两个文件夹:Features,StepBindings
“功能”文件夹中的新项目:Specflow功能文件(类型:Visual C#项),名称为myFeature.feature
结果: 新的绿色myFeature.feature文件下没有自动生成的功能CS文件
解决方案警告:在此系统上找不到自定义工具'SpecFlowSingleFileGenerator'。 (文件:myFeature.feature)
注意:在“工具”>“选项”>“ Specflow”下,“启用SpecFlowSingleFileGenerator”设置为False
在myFeature.feature中右键单击一个步骤>生成步骤定义>在StepBindings文件夹中另存为'myFeatureSteps.cs' 结果:解决方案警告:ScenarioContext.Current已过时(文件:myFeature.feature第12、18、24行)
View-Test Explorer
结果:未显示测试,包括单击“全部运行”(触发构建/发现测试/在解决方案中运行)时
进一步的探索步骤:
(必需?)添加了nuGet软件包:NUnit3TestAdapter v3.15.1
将nuGet软件包NUnit更新为v3.12.0
重建的项目,在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
答案 0 :(得分:0)
查看完NuGet软件包后,需要先安装SpecFlow.Tools.MsBuild.Generation
软件包,然后才能在内部创建feature.cs文件。