簡體   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