Specflow 功能不会自动生成 cs 文件或在 C# Nunit 项目中显示为测试
Specflow features aren't auto-generating cs files or appearing as tests in C# Nunit project
(为清楚起见更新了此 post)
我无法创建起点 C# Specflow Nunit 项目(与以下在线教程和视频相反),新的 specflow 功能自动生成 cs 文件并显示为 运行 可用测试。
重现步骤:
安装 Visual Studio Community 2019 v16.3.5
扩展 > 管理扩展:为 VS 2019 (v2019.0.36.11860) 安装 Specflow。重新启动 VS 以接受向导上的 Specflow 安装。
新建项目 > 测试 > C# 单元测试项目(.Net Framework、C#、Windows、测试)。名称:myProject 框架:4.7.2
删除UnitTest1.cs自动生成的项目文件
从解决方案的 NuGet 管理器中,添加包:Specflow.NUnit v3.0.225(select 可以更改解决方案,并接受包许可证
向项目添加两个文件夹:Features、StepBindings
功能文件夹的新项目:Specflow 功能文件(类型:Visual C# 项目)名称myFeature.feature
结果:
没有自动生成的特征 cs 文件出现在新的绿色 myFeature.feature 文件
下
解决方案警告:在此系统上找不到自定义工具 '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
重建项目,点击运行All in testexplorer,重启Visual Studio
最终结果:仍然没有测试显示在 运行ner 中,自动生成的代码仍然显示有错误 (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>
注意:最上面的 packages 元素带有下划线 "not declared"?
尝试使项目正常工作的代码:
https://github.com/bobjames238745/getSpecflowWorkingWithNunit
查看您的 NuGet 包后,您需要先安装 SpecFlow.Tools.MsBuild.Generation
包,然后 feature.cs 文件将在生成时创建。
(为清楚起见更新了此 post)
我无法创建起点 C# Specflow Nunit 项目(与以下在线教程和视频相反),新的 specflow 功能自动生成 cs 文件并显示为 运行 可用测试。
重现步骤:
安装 Visual Studio Community 2019 v16.3.5
扩展 > 管理扩展:为 VS 2019 (v2019.0.36.11860) 安装 Specflow。重新启动 VS 以接受向导上的 Specflow 安装。
新建项目 > 测试 > C# 单元测试项目(.Net Framework、C#、Windows、测试)。名称:myProject 框架:4.7.2
删除UnitTest1.cs自动生成的项目文件
从解决方案的 NuGet 管理器中,添加包:Specflow.NUnit v3.0.225(select 可以更改解决方案,并接受包许可证
向项目添加两个文件夹:Features、StepBindings
功能文件夹的新项目:Specflow 功能文件(类型:Visual C# 项目)名称myFeature.feature
结果: 没有自动生成的特征 cs 文件出现在新的绿色 myFeature.feature 文件
下解决方案警告:在此系统上找不到自定义工具 '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
重建项目,点击运行All in testexplorer,重启Visual Studio
最终结果:仍然没有测试显示在 运行ner 中,自动生成的代码仍然显示有错误 (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>
注意:最上面的 packages 元素带有下划线 "not declared"?
尝试使项目正常工作的代码: https://github.com/bobjames238745/getSpecflowWorkingWithNunit
查看您的 NuGet 包后,您需要先安装 SpecFlow.Tools.MsBuild.Generation
包,然后 feature.cs 文件将在生成时创建。