2010-01-13 67 views
4

我聽說過單元測試的一個自豪感是,你可以在一分鐘左右運行2000多個測試..因爲唯一的限制是CPU速度和內存。我喜歡在我的測試項目中包含外部依賴性斷言/測試(例如:用戶是否記錄了應用程序的登錄情況,並在適當的表上插入/更新/刪除權限以說明數據庫是否曾遷移過?)是否有一個.net框架來管理單元和集成測試?

是否有框架或支持的方式來利用MS測試的方式,你可以選擇只運行單元測試或者只是集成測試,或者只需點擊一下按鈕?

+0

難道你不能按項目分開他們嗎? Project.Tests.Unit Project.Tests.Integration等 – mxmissile 2010-01-13 16:07:04

+0

我更喜歡在一個測試項目中進行所有測試。所以項目A,會有一個項目包含單元測試和集成測試的測試項目。使用類別並從集成測試中拆分單元測試意味着您仍然可以單獨運行這些測試。分開的項目只會增加複雜性並使解決方案臃腫。 – Finglas 2010-01-13 16:54:41

+0

@ Dockers是的,這正是我試圖避免的,我不希望每個應用程序項目有多個測試項目。 – Maslow 2010-01-13 17:13:37

回答

6

是的。 :)

在VS2008中,當您創建測試項目時,Visual Studio也會生成測試元數據文件或vsmdi文件。解決方案可能只有一個元數據文件。該文件是所有測試項目中解決方案中生成的所有測試的清單。打開元數據文件,打開測試列表編輯器 - 用於編輯和執行文件的GUI。

從測試列表編輯器中,您可以創建測試列表[例如UnitTestList,IntegrationTestList],並將單個測試分配給特定的測試列表。默認情況下,「測試列表編輯器」列出「所有加載的測試」列表中的所有測試,以及「測試不在列表中」列表以幫助分配測試。使用這些來查找或分配測試組列表。請記住,一個測試可能只屬於一個列表。

有調用測試列表

  • 在Visual Studio兩種方式,每個列表可以單獨從測試列表編輯器調用。
  • 從命令行中,MSTest可能會被調用一個特定的列表。

一種選擇對於開發人員在其日常工作流程中很有用,另一種選擇對於自動化構建流程很有用。

我在上一個項目中設置了類似的東西。


此功能非常有價值*。

理想情況下,我們希望每當修改代碼庫時都運行每個可以想到的測試。這爲我們提供了對我們所做更改的最佳迴應。然而,在實踐中,在測試套件中運行每個測試通常意味着增加執行時間(分鐘或小時)來構建時間[取決於代碼庫和構建環境的大小] - 這對開發人員和持續集成而言過於昂貴[ CI]環境,兩者都需要快速週轉以提供相關響應。

指定顯式測試列表的能力允許開發人員,CI環境和最終構建環境選擇性地定位某些功能而不犧牲質量控制或影響整體生產力。


例如,我正在開發分佈式應用程序。我們編寫了自己的Windows服務來處理傳入的請求,並利用Amazon的Web服務進行存儲。我們不想來運行我們的亞馬遜的一套測試每個構建因爲

  1. 亞馬遜並不是始終
  2. 我們並不總是連接
  3. 響應時間可能在數百毫秒來衡量,這在一個批次的測試請求可以輕鬆地擴展我們的測試套件執行時間

但是,我們希望保留這些測試,因爲我們需要一個套件來驗證行爲。如果作爲開發人員對我們與亞馬遜的集成有疑問,我可以根據需要從我的開發環境執行這些測試。當推出QA的最終版本時,Cruise Control也可以執行這些測試,以確保其他功能區域的人員不會無意中破壞亞馬遜整合。

我們將這些亞馬遜測試放入集成測試列表中,該集合測試列表可供每位開發人員使用,並且在Cruise Control被調用以促進構建時在構建計算機上執行。我們維護了另一個單元測試列表,每個開發人員都可以使用這個單元測試列表,並在每一個版本上執行。由於所有這些內容都是In-Memory [並且編寫得很好],並且只要它用於構建項目就會執行,但它們不會影響單個構建操作,並能及時提供Cruise Control的出色反饋。

* =有價值==重要。 「值」 是天:)

+1

+1,那好像很簡單。仔細看看測試菜單,從那裏看起來很容易理解。 – Maslow 2010-01-13 15:49:41

+0

你認爲這個功能很重要嗎? – Maslow 2010-01-13 17:12:26

+0

您是否手工維護「單元測試」列表?你是否總是需要將新創建的測試添加到測試列表中? – 2010-03-22 07:51:47

4

NUnit的

可以在categories組固定了的話。

我有我的集成測試設置一個類別。然後使用NUnit GUI,您可以指定要運行的類別。

在Visual Studio中運行時,我使用TestDriven.NET來運行我的測試。測試在我的測試項目中按類型分開,所以這使得單獨運行單元測試或集成測試變得更容易。

相關問題