我是SpecFlow的新手,我使用SpecFlow软件包和SpecFlow附加软件包(NUnit随附)的基本功能进行了安装安装。
添加特征文件后,我在使用自定义工具生成SpecFlowsingleFilegenerations时遇到了一些问题(并且通过从属性中删除选项来修复了这些问题)
然后,当我重建解决方案时。它在appconfig文件中为unittestprovider显示了一些无法识别的元素
错误:[SpecFlow] System.Configuration.ConfigurationErrorsException: 无法识别的元素“ unitTestProvider”。
我的appconfig文件specflow部分
<specFlow>
<unitTestProvider name="NUnit" />
<plugins>
<add name="Baseclass.Contrib.SpecFlow.Selenium.NUnit" path="..\packages\Baseclass.Contrib.SpecFlow.Selenium.NUnit.1.3.1\tools" />
</plugins>
</specFlow>
答案 0 :(得分:1)
该配置文件不适用于SpecFlow 3.0及更高版本。您可以阅读有关如何更新到3.0 here的文档。它说:
更改单元测试提供程序的配置方式
在以前的SpecFlow版本中,用于执行测试的单元测试提供程序是在app.config文件中配置的。从SpecFlow 3开始,我们强烈建议您通过安装可用的软件包之一来配置您的单元测试提供程序(见下文)。
还有:
specflow.json
前进,我们建议使用specflow.json配置SpecFlow,而不是app.config。 .NET Core项目需要specflow.json(不支持app.config)。对于完全框架项目,虽然可以使用specflow.json是可选的,但我们建议迁移到新格式。有关更多详细信息,请参阅文档中的配置。
因此,您可以从app.config中删除SpecFlow并创建一个名为specflow.json的文件。您可以将以下内容放入其中:
{
"language": {
"feature": "en-US"
}
}
您可以根据需要将语言更改为其他语言。
您还必须在项目中添加一个测试运行器。在您的情况下,它是NUnit,因此请添加带有NuGet的SpecFlow.NUnit。通常,您需要example project中列出的NUnit软件包。
答案 1 :(得分:0)
所以我通过执行以下步骤解决了相同的问题:
转到管理解决方案的块包,并在显示版本3.1.97(由自身更新)的安装下查找规格流,并卸载并安装整个项目的3.1.76版本,包括测试框架(specflow)
对于Specflow.nunit,请卸载并安装版本3.1.76,但对于测试框架,请不要安装(取消选中其旁边的框),但其他项目应已还原。
与Specflow.Tools.Msbuild.geneartion相同,与步骤2相同,然后重新启动计算机。