2011-07-07 65 views
5

我在同一個命名空間中有幾個測試。我沒有爲每個單元測試使用像Test1,Test2,...等命名約定。所以,現在當我運行所有測試時,它們不會按照我希望的順序運行。有沒有辦法訂購測試?是否可以在Visual Studio c#中指定測試的順序?

如果我不以特定順序執行它們,我的測試不會失敗。但是,我只是想按照它們在測試用例電子表格中的順序執行它們。

+1

你會得到很多評論說,如果他們是適當的單元測試它應該無關緊要! –

+8

它應該沒關係,如果它們是正確的...... –

+1

我同意適當的單元測試概念,但是對於調試大量測試,能夠記錄測試運行的順序可能很有用。將允許測試被調試,以便它們是正確的。 – demongolem

回答

5

您正在尋找的答案是是的。雖然我同意隔離原則,但有些情況下需要測試一系列事件。在VS 2010中,您可以創建一個新的「有序測試」來按順序捆綁和測試一組測試。

+1

@GlennFerrieLive一個代碼示例或鏈接到「有序測試」實際上會是神話般的! – iGanja

+0

@iGanja - 這是一個示例。我將它壓縮並放在我的Blob Store上 - http://j.mp/so-tests-sample –

8

你的測試不應該是順序依賴;這打破了測試不相互依賴的概念。在Visual Studio中缺乏排序測試的能力反映了這個概念。

+5

然後定義如何存在稱爲Ordered Test的測試類型,您可以在其中選擇要運行的單元測試以及按何種順序。 –

2

Visual Studio有一個內置的有序測試模板(假設您使用的是MSTest框架)。如果您打開測試項目中的上下文菜單,則可以在「新測試」菜單下或直接將其作爲「有序測試」來使用。以前從未使用過,但我假設如果您正在解決方案中運行所有測試,則測試仍會以未定義的順序執行。

4

哦,你違反了主要單元測試規則之一 - 「隔離」。

測試不應該有任何依賴性順序。不要等待答案,去重構你的測試,真正獨立於其他每一個。相信我,現在更好:)

+2

謝謝!我的測試不依賴,但我只是想讓它們按照它們在我的測試用例電子表格中的順序執行。 – Maya

+0

好的)但無論如何,你不應該這樣做..) –

+0

我知道這個問題是有點老,但我有同樣的問題。我有兩個獨立的測試與我不能控制的數據庫進行通信。爲了正確的測試運行,我需要激活測試在停用測試之前運行。有沒有辦法呢?這是否也違反了「主要」單元測試隔離規則? 因爲我想使用單元測試來驗證我與數據庫服務器的通信是否正常工作,所以我不想爲我的單元測試託管自己的測試數據庫。 –

相關問題