簡體   English   中英

MSTest - 從構建服務器隱藏一些單元測試

[英]MSTest - Hide some unit tests from build server

從構建服務器運行時,我有三個單元測試無法通過 - 它們依賴於運行測試的用戶的登錄憑據。

有沒有辦法(屬性???)我可以從構建服務器隱藏這三個測試,並運行所有其他測試?

我們的構建服務器專家告訴我,生成一個排除那些測試的vsmdi文件會起到作用,但我不知道該怎么做。

我知道我可以把這三個測試放到一個新項目中,讓我們的構建服務器管理員明確地排除它,但我真的很想能夠在有問題的測試中使用一個簡單的屬性。

您可以使用類別標記測試,然后根據類別運行測試。

[TestCategory("RequiresLoginCredentials")]
public void TestMethod() { ... }

運行mstest ,可以指定/category:"!RequiresLoginCredentials"

其他人的答案很古老。

在現代視覺工作室(2012年及以上),測試使用vstest而不是mstest運行。

新的命令行參數是/TestCaseFilter:"TestCategory!=Nightly"在解釋這個文章。

有一個IgnoreAttribute 該帖還列出了其他方法。

打開測試 - > Windows->測試列表編輯器。

在那里你可以包含/隱藏測試

我想出了如何在VS 2012的構建定義中按類別過濾測試。我無法在其他任何地方找到此信息。

在測試源下的測試用例過濾器字段中,在自動測試下,在構建過程參數下,在過程選項卡中,您需要編寫TestCategory = MyTestCategory(在任何地方沒有引號)

然后在測試源文件中,您需要添加TestCategory屬性。 我已經看到了一些方法可以做到這一點,但對我來說有用的是將它添加到與TestMethod相同的屬性中,如下所示。

[TestCategory(“MyTestCategory”),TestMethod()]

在這里你需要報價

當我從VS構建定義(不完全是MSTest)運行單元測試時,在Automated Tests屬性的Criteria選項卡中指定:

TestCategory!=MyTestCategory

所有類別為MyTestCategory的測試都被跳過。

我首選的方法是在我的解決方案中有兩種測試項目:一種用於單元測試,可以從任何上下文執行,應該始終通過,另一種用集成測試,需要特定的上下文才能正常運行(用戶憑證) ,數據庫,網絡服務等)。 我的測試項目使用命名約定(例如:businessLogic.UnitTests vs businessLogic.IntegrationTests),我將構建服務器配置為僅運行單元測試(* .UnitTests)。 這樣,如果我想運行集成測試,我就不必評論IgnoreAttributes,我發現它比編輯測試列表更容易。

暫無
暫無

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

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