3

有誰知道一個工具,可以幫助確定哪些單元測試應該運行基於提交差異?確定哪些單元測試運行基於差異

例如,假設開發人員提交只改變一行代碼的內容。現在,假設我有1000個單元測試,每個單元測試的代碼覆蓋率數據(或者可能僅用於每個測試套件)。開發人員的單行更改不太可能需要運行所有1000個測試用例。相反,也許只有少數這些單元測試實際上會接觸到這種單行更改。有沒有可以幫助確定哪些測試用例與開發人員的代碼更改相關的工具?

謝謝!

回答

0

您可能可以使用make或類似工具通過爲每個測試生成結果文件並使結果文件依賴於它使用的源文件(以及單元測試代碼)來完成此操作。

0

我們的family of Test Coverage tools可以告訴你哪些測試練習哪些部分的代碼,這是你的答案的基礎。

當您重新測試代碼庫時,他們還可以告訴您哪些測試需要重新運行。實際上,它計算它已經插入的源文件的差異,而不是使用提交差異,但它實現了你正在尋找的效果,恕我直言。

+0

我需要使用這些工具來獲得代碼覆蓋率嗎?或者我們仍然可以使用我們自己的工具獲取代碼覆蓋率?將這些工具與構建過程集成需要做些什麼? – DuneBug 2010-10-21 18:27:42

+0

你必須使用這些工具作爲內置微分計算的機器。這些工具具有UI和命令行功能,因此將它們集成到批量構建腳本中應該很簡單。進一步的討論可能會離線發生;查看我的生物聯繫信息。 – 2010-10-21 22:48:43

0

您可以嘗試使用「證明」運行它們,它具有基於文件修改時間的「新鮮」選項。詳情請查閱prove manpage

免責聲明:我是C單元測試的新手,沒有使用證明,但在我的研究中已閱讀了此選項。

2

據我所知,單元測試的關鍵目的是覆蓋整個代碼庫。當您對一個文件進行小改動時必須執行所有測試以確保您的微改不會破壞產品。如果你違反這個原則,你的單元測試沒有什麼理由。

ps。我建議將項目拆分爲獨立的模塊/服務,並創建新的「集成單元測試」,這將驗證它們之間的接口。但是在一個模塊/服務中,所有的單元測試應該執行爲「全部或全部」。

+0

我們有超過1000名開發人員將代碼提交到同一分支。他們可能爲完全不相關的服務提供代碼(即服務A永遠不會使用來自服務B的代碼),但所有這些服務都捆綁到一個映像中。如果我們有數千個單元測試,那麼對每個提交運行每個單元測試都是沒有好處的(例如,開發人員處理服務A提交代碼,不需要對服務B運行測試)。整個套件可以每隔幾天運行一次。但是,運行與承諾代碼相關的測試將非常有益。 – DuneBug 2010-10-27 17:20:42

+1

@DuneBug你怎麼知道一些服務「完全不相關」?你在哪裏保留這些知識?如果有一天情況發生變化並且服務A開始使用服務B會怎樣? – yegor256 2010-10-28 09:07:32

相關問題