在實踐的過程中,很多項目并不能有效地堅持單元測試,即使書寫了,也不能夠持續也去維護這些單元測試,最后,這些單元測試代碼將被廢棄不再使用。長此以往,團隊將不再愿意去寫單元測試。
咎其原因,在我看來最重要的不外乎兩點。
第一點,也是最重要的一點,團隊并沒有意識到書寫單元測試是一件非常有必要,有意義,有價值的事。這個話題就不展開探討了,網上一搜一大把。在這里,我分享我最最最喜歡的一句話:越好的單元測試會讓我們的老板和我們自己能夠睡得越踏實。
第二點,單元測試比較麻煩,編寫單元測試麻煩,維護單元測試麻煩。
以我實際工作的經驗來看,第二點是確確實實存在的,說是麻煩,還是比較客氣的,有的時候在受壓于項目進度和項目成本的情況下,幾乎可以用做不到來形容。
舉兩個例子來說明
1. A表的STATUS字段從PENDING改成ACCEPTED
2. 關連A, B, C, D表后實現查詢功能
大家會怎么做?
大家的項目中會對這兩種情況進行完整的單元測試,并有效地維護了這些單元測試用例嗎?
我們項目的做法是
1. 準備數據
2. 每次跑單元測試之前導入這些數據
3. 跑完單元測試之后清理這些數據
歡迎大家一起探討,特別是結合自己項目中的實際情況一起探討。
我在接下來的文章中也將我實際使用的方法和工具和大家分享。
大體思路是設計一個工具能基于具體的業務需求方便地準備數據,從而能讓單元測試在這些數據的基礎上能夠有效和低成本地實現。
工具的設計要求是:
1. 能方便地設計和準備測試數據
2. 在數據庫變更的情況下能方便地維護已存在的測試數據
3. 測試團隊和開發團隊都能夠方便都使用
4. 所有團隊成員之間設計的數據要能夠避免沖突
具體實現是:
1. 在Excel中設計數據
2. 能使用一些API在集成工具中導入數據,如Hudson, Ant, Maven
3. 能在圖形界面中導入全部或特定測試用例的數據
4. 能自動同步數據庫表結構的變更到Excel中
5. 分配指定的主鍵區間給每一個團隊成員
原文轉自:http://www.iteye.com/topic/1133275