[英]ClassCleanup in MSTest is static, but the build server uses nunit to run the unit tests. How can i adjust?
[英]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.