2011-11-09 215 views
15

我們使用Visual Studio 2010 Ultimate和用MSTest編寫的測試。我們的單元測試和集成測試*都是用MSTest編寫的。使用MSTest分別運行單元測試和集成測試

**根據我們的定義,集成測試是MSTest的TestMethod需要一段時間來運行和/或召喚出的外部組件,如數據庫或Web服務。*

我正在尋找一個輕鬆過濾集成測試的方式,這樣只有單元測試運行時,所有集成測試都不會運行。

我的想法而已:

  1. 馬克集成測試與[Ignore]屬性。這種方法很有效,但是當你想運行集成測試時真的很痛苦。

  2. [TestCategory]屬性分配給不同的測試類型。這允許它們分開運行,但只能通過「測試視圖」面板運行。您不能使用CTRL + R,A(在解決方案中運行所有測試)或其他類似的快捷鍵/熱鍵。

  3. 集成測試在一個單獨的項目中,有沒有什麼可以做到阻止他們在項目級運行?只要它很容易切換。

  4. 將集成測試寫入不同的測試框架,例如, NUnit的。這將使他們完全脫離工具的角度。

有沒有人有任何其他建議?有沒有可以幫助解決這個問題的插件?

回答

5

我建議有不同的項目(或多個項目)進行集成測試,因爲根據您的跑步者,在所有跑步者中運行或不運行測試的唯一真正方法是包含或不包含測試類庫。

但是,如果您使用的是MSTest,我還建議您使用TestCategoryAttribute來標記非單元測試。然後,您可以「過濾」測試,以使用MSTest在測試視圖中運行測試。

像Resharper和顯然TestDriven.net(http://bit.ly/tmtYC2)這樣的跑步者允許您從通用的單元測試執行過濾掉這些測試。

+0

而且,因爲這樣的限制,我不直接使用MSTest亞軍。 –

+0

BUILD 2012 VS團隊正在爲演播室測試跑步者窗口演示更好的過濾。如果它適用於所有平臺或者僅僅是Windows 8,這並不是100%明顯的。顯然,代碼庫非常分散; p – felickz

2

我有一個建議,但你不會喜歡它。

完全放棄MSTest,而其他單元測試框架一直在發展MSTest,因爲它幾乎在時間上停止。是的,它直接集成VS有一個主要好處,但是如果我沒有錯誤的將在VS 2011中改變,它將爲定製單元測試運行器集成提供本地支持。

(注:停止時間,因爲我在VS 2008中使用要節制部分可能是因爲我承認沒有付錢非常重視MSTest的是不是真的)

我使用NUnit和分開我的單元測試通過使用不同的類庫項目進行集成測試。然後,我使用Gallio命令行運行器自動運行測試,從而允許我配置用於運行單元和集成測試的單獨腳本。

最後,除了個人意見之外,我不確定,但TestDriven.net插件可能支持僅運行特定類別的測試,因此您可以檢查該問題。

5

如果您的單元測試項目位於單獨的名稱空間中,則可以使用鍵盤快捷鍵CTRL+R, T運行當前上下文中的所有測試(即namespace MyApp.Tests.Unit)。爲此,將光標放置在任何單元測試類的名稱空間子句中的開始大括號之後。

+0

這是一個很好的建議,但問題是我們有多個單元測試項目。 – tjrobinson