繁体   English   中英

无法识别的元素 unitTestProvider

[英]Unrecognized element unitTestProvider

我是 SpecFlow 的新手,我使用 SpecFlow 包和 SpecFlow 附加包(NUnit 附带)的基本贡献设置安装。

添加我的功能文件后,我在生成 SpecFlowsingleFilegenerations 的自定义工具方面遇到了一些问题(我通过从属性中删除一个选项来修复这些问题)

然后当我重建解决方案时。 它在 unittestprovider 的 appconfig 文件中显示了一些无法识别的元素

错误:[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>

该配置文件不适用于 SpecFlow 3.0 及更高版本。 您可以在此处阅读有关如何更新到 3.0 的文档。 它说:

对单元测试提供程序的配置方式的更改

在以前版本的 SpecFlow 中,用于执行测试的单元测试提供程序是在 app.config 文件中配置的。 从 SpecFlow 3 开始,我们强烈建议通过安装可用软件包之一来配置您的单元测试提供程序(见下文)。

并且:

规范流.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。 您通常需要 NUnit 示例项目中列出的包。

所以我通过采取以下步骤解决了同样的问题:

  1. 转到管理解决方案的 nugget 包,并在显示版本 3.1.97(自行更新)的安装下查找规范流程,卸载并安装整个项目的版本 3.1.76,包括测试框架(规范流程)。

  2. 对于 Specflow.nunit 卸载并安装 3.1.76 版,但不适用于测试框架(取消选中旁边的框),但其他项目应该已经恢复。

  3. 对 Specflow.Tools.Msbuild.geneartion 执行与步骤 2 相同的操作并重新启动机器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM