我有大約100個單元測試,覆蓋率爲20%,我試圖增加覆蓋率,並且這是一個開發項目,因此不斷添加新的測試。如何處理長時間運行的單元測試?
目前在每次構建後運行我的測試是不可行的,他們需要大約2個時刻。
測試包括:
- 文件從測試文件夾讀取(數據驅動的風格,以模擬一些HTTP的東西)
- 做實際的HTTP請求到本地Web服務器(這是一個巨大的痛苦,嘲笑,所以我不會)
- 不是所有的單元測試,但也有相當複雜的多線程類需要測試,我做測試的整體行爲。這可以被視爲功能測試,但也需要每次運行。
多數功能需要讀取HTTP,TCP做等等。我無法改變他們,因爲這是項目的整體思路,如果我改變這些測試將是毫無意義的測試的東西。
另外我不認爲我有最快的工具來運行單元測試。我目前的設置使用VS TS與Gallio和nUnit作爲框架。我認爲VS TS + Gallio比其他人慢一點。
你會推薦我解決這個問題嗎?我想在每一點變化btu後運行單元測試,目前這個問題正在中斷我的流程。
進一步明確編輯:
守則高度耦合的!不幸的是,改變就像一個巨大的refatoring過程。還有一個雞蛋綜合徵,我需要單元測試來重構這樣一個大代碼,但是如果我不重構它,我不能再進行更多的單元測試:)
高度耦合的代碼不允許我將測試分割成更小的塊。此外,我不測試私人的東西,這是個人的選擇,這使我能夠更快地發展,並且仍然獲得大量的好處。
而且我可以確認實際上所有的單元測試(具有適當的隔離)相當快,並且我沒有與它們的性能問題。
進一步明確:
代碼被高度耦合!不幸的是,改變就像一個巨大的refatoring過程。還有一個雞蛋綜合徵,我需要單元測試來重構這樣一個大代碼,但是如果我不重構它,我不能再進行更多的單元測試:)
高度耦合的代碼不允許我將測試分割成更小的塊。此外,我不測試私人的東西,這是個人的選擇,這使我能夠更快地發展,並且仍然獲得大量的好處。
而且我可以確認實際上所有的單元測試(具有適當的隔離)相當快,並且我沒有與它們的性能問題。
所以我假設正確的舉措是:重構代碼的方式,我沒有這麼多的耦合。然後每天運行功能測試,但在每次構建之後運行單元測試? – 2008-12-15 15:29:24
另外我已經更新了有關您的答案的問題。 – 2008-12-15 15:30:02
您甚至可以使用持續集成在每次簽入時運行所有功能測試。當我編寫單元測試時,我傾向於頻繁地運行那些本地的工作,然後再運行較少的集合,以及我提交之前的所有工作。 – 2008-12-15 16:00:48