2011-08-18 181 views
6

在我的工作場所,我們有一個包含大約50個項目和大約2000個單元測試的c#.net解決方案。在更改代碼之後,我們需要在將更改推送到構建服務器之前運行解決方案中的所有測試。運行所有測試可能需要大約10-15分鐘。我在想 - 嘿,也許可能會有一些過程分析我所做的所有代碼更改,然後決定只運行相關的測試方法。如果可以進行這樣的分析,那麼與其運行2000次測試,計算機將只運行15次或100次測試,那麼我們正在討論提高生產力和減少頭痛的方法。 任何人有任何想法如何實現這一點,或者如果這樣的軟件可用?代碼依賴單元測試

回答

2

我們C# Test Coverage Tool可以做到這一點。

  1. 它逐漸儀器只是因爲 最後的測試覆蓋率運行更改過的文件。

  2. 它可用於跟蹤每個單元測試的測試覆蓋率,和涉及到哪些文件。當一個文件改變時,它將它與以前的版本進行比較;如果以前某些單元測試涉及的方法 發生變化,則會標識這些單元測試。 您必須組織該過程以將測試運行與覆蓋率數據相關聯,並重新運行已識別的單元測試,但這只是一小段腳本。原因是爲了使測試覆蓋率工具能夠使用任意測試框架進行操作。

您可以在構建服務器上這樣做以節省時間。更重要的是,你可以爲每個開發者提供這個,以便他在檢查變化之前只運行驗證他所修改代碼所需的測試。

5

這真的很難說什麼在多項目環境取決於什麼。理想的情況是:

  • 單元測試將是真實的單元測試,其中有2000應該像20秒跑完。
  • 您的長時間運行測試,將成立一個持續構建你的構建服務器上,所以你仍然會得到相當快通知你搞砸的事情,如果你錯過了什麼,但你可以親自負擔只是一個更有選擇性的只運行您認爲在提交之前可能會影響代碼更改的測試。
+5

+1用於從集成測試中分離單元測試。見http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test – TrueWill

2

的Visual Studio 2010 Premium和Ultimate有一個「測試的影響」的工具,正是這麼做的。

+0

有趣它是否能夠皮卡NUnit的測試,不僅MSTests – sll

+0

+1 @DBM:很高興的事情永遠不會知道aboit前,http://blogs.msdn.com/b/phuene/archive/2009/12/07/test-impact-analysis-in-visual-studio-2010.aspx – sll

+0

@sllev它僅限於MSTest測試。 – ckittel

0

在我們的環境中,我們使用NCrunch http://www.ncrunch.net/

它建立的項目,並運行在使用多線程的背景單元測試。 它以愉快的方式通知您單元測試失敗。

NCrunch幾乎可以滿足您的需求。看一看。