2013-01-09 57 views
0

我正在尋找一個工具,可以解決以下問題:智能單元測試後提交

我們的完整單元測試套件需要數小時才能完成。所以當程序員提交代碼時,他會在幾個小時後得到測試結果。我們想要實現的是縮短髮現簡單錯誤的時間。這可以通過智能選擇幾個單元測試來完成,這些單元測試將在提交之前/之後立即運行。當然,我們不想隨機選擇這個單元測試 - 我們希望單元測試更容易發現錯誤。

無需額外軟件即可解決此問題的想法: 爲每個單元測試編寫代碼覆蓋率。知道哪些文件被哪些單元測試「觸及」,如果用戶改變了這些文件中的任何一個,我們可以選擇這個單元測試。 這個解決方案有明顯的缺點 - 我們必須手動存儲和更新每個單元測試的覆蓋文件列表。

我想知道,是否有任何工具可以幫助選擇測試運行? 項目使用C++,並在Linux下工作。

+0

爲什麼不把這些信息包含在提交消息中?他們應該已經包含了正在解決的問題#,所以它也可以基於此。 –

+1

如果你的單元測試用一個好的makefile分解爲獨立的獨立程序,你可以在不做'make clean'的情況下檢查出所做的更改,然後運行必須重建的測試。 –

+0

在.NET世界中,實用程序ContinuousTests執行這種測試運行 –

回答

1

Michael Feathers在Working Effectively with Legacy Code中寫道,需要10ms的單元測試是一個很慢的單元測試。你必須根除慢速測試。做不是基於覆蓋猜測破解子集跑步者,最終會出錯並咬你。

請記住單元測試和集成測試之間的區別。單元測試不涉及文件系統,通過網絡進行通訊或與數據庫通訊:這些都是集成測試。是的,集成測試通常比較容易編寫,但這表明您的軟件可以更好地進行分解 - 而且作爲一個愉快的巧合,更容易測試。

我的懷疑是你的整合測試是那麼長時間。將這些移動到一個單獨的套房,比每次入住時都要頻繁,比如每晚都要這樣。