簡體   English   中英

Azure Devops Visual Studio 測試任務無法發現具有 TestCaseSource 屬性的 Nunit 測試

[英]Azure Devops Visual Studio Tests task cannot discover Nunit tests with the TestCaseSource attribute

我正在嘗試將 Nunit 的 [TestCaseSource] 屬性與從 Azure DevOps 運行的自動化測試一起使用。

示例:未發現此測試

public static object[] TestSource = new[]
{
    new[] { new MyType() },
    new[] { new MyType() },
    new[] { new MyType() }
};
[Test, TestCaseSource("TestSource")]
public void MyTestMethod(MyType value)
{
    ...
}

不幸的是,我的測試方法無法執行,因為“在測試機器上找不到與源過濾條件匹配的測試程序集,或者沒有發現與測試過濾條件匹配的測試。驗證機器上是否存在測試程序集並且測試過濾條件正確。 ”錯誤。

但是,當我從測試方法中刪除 TestCaseSource 屬性時,測試能夠被執行,這意味着可以正常找到它們,這導致了 TestCaseSource 屬性使我的測試無法發現的問題。

示例:發現此測試

[Test]
public void MyTestMethod()
{
    ...
}

我相信我在版本中設置了一些錯誤,這應該可以工作,因為當我從 Visual Studios 測試資源管理器運行測試時,[TestCaseSource] 測試方法可以正常工作

我的 DevOps 發布管道非常簡單,我使用帶有存檔文件模式的提取文件任務,例如“ $(System.DefaultWorkingDirectory)/SolutionName/drop/SolutionName.Tests.zip ”和“ $(System.DefaultWorkingDirectory)的目標文件夾” /測試

然后我有一個 Visual Studio 測試任務 (2.),它通過測試運行選擇測試並搜索“ $(System.DefaultWorkingDirectory)/tests ”文件夾

我最好的猜測是,也許我需要在我的測試項目中將 Visual Studio 測試任務的“自定義測試適配器路徑”字段設置為 NUnit3Adapter Nuget package,但我不確定在哪里/如何獲得它的路徑。

我是否需要更改我的管道以包含 NUnit3Adapter,或者還有其他原因導致我的測試無法發現? 我出於某種原因進行了廣泛的搜索,據我所知,沒有其他人對 [TestCaseSource] 有這個問題,這讓我相信我做錯了什么。

更新:

經過更多的搜索和調查,我想我已經找到了問題的根源,但我不知道如何解決它。

當我通過 Visual Studio 測試資源管理器將我的測試方法關聯到 Azure DevOps 測試用例以進行關聯自動化時,測試方法的名稱設置不正確。

示例:從之前給出的這個測試方法

public static object[] TestSource = new[]
{
    new[] { new MyType() },
    new[] { new MyType() },
    new[] { new MyType() }
};
[Test, TestCaseSource("TestSource")]
public void MyTestMethod(MyType value)
{
    ...
}

如果我將MyTestMethod與工作項相關聯,DevOps 中的“自動測試名稱”字段將顯示“SolutionName.Tests.MyTestMethod”作為值。

你可以在這里看到

但是我認為這是錯誤的,而是名稱需要是“ SolutionName.Tests.MyTestMethod(MyType)

我認為這是因為在某一時刻,我確實得到了一個與“SolutionName.Tests.MyTestMethod(MyType)”相關聯的測試,並且效果很好。

我現在的問題是如何讓“關聯測試用例”function 在測試方法名稱的末尾包含(MyType)

似乎我找到了自己問題的答案,經過進一步的試驗和錯誤,我設法讓一切正常工作。

實際上,最終結果是,因為我的更新指定了 Visual Studio 測試資源管理器的“關聯到測試用例”function 沒有像我預期的那樣填寫“自動化測試名稱”。

示例:無參數

"SolutionName.Tests.MyTestMethod"

但是最終我發現您必須首先在本地執行測試 然后,當測試結果通過時,關聯到預期的測試用例。

只有在測試方法名稱的參數部分正確顯示在 Azure DevOps“自動測試名稱”字段中之后。

示例:帶參數

"SolutionName.Tests.MyTestMethod(MyType)"

一旦我這樣做了,我的所有測試都會在我的代理上被發現並正確執行。

我不確定這是否是故意行為。 我的搜索都沒有將其作為預期的用戶體驗返回。 它對我的工作越少越好。

筆記

雖然這可行,但我沒有看到 azure 開發操作中的 object[] 的每個迭代的每個單獨的測試結果。 要么這是一個錯誤,要么我試圖做的不是預期的行為。 除此之外,一切都對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM