在我的TDD感悟(一)中啊犬,說到了測試用例的重要性灼擂。當完成了測試用例的編寫,我們可以進入到TDD中的“紅”觉至,也就是單元測試代碼的編寫剔应。
測試用例和測試代碼
有了測試用例文檔,那么測試代碼就容易編寫多了语御。有了測試用例相當于定了一個測試目標峻贮,這個時候可以先評估測試用例,看哪個測試用例是最重要的应闯。優(yōu)先度最高的用例纤控,可以優(yōu)先挑選出來先實現(xiàn)
測試代碼要盡可能的簡單
單元測試一般采用3A模式(Arrange,Act碉纺,Assert)船万。代碼量不宜太多。單元測試本身也是代碼骨田,測試代碼本身不會再被驗證是否正確耿导。因此測試代碼越是簡單,就越容易判斷測試代碼是否正確态贤。否則一旦執(zhí)行的時候舱呻,當測試條變?yōu)榧t色的時候,不好排查是測試代碼有問題抵卫, 還是被測試代碼有問題狮荔。增加了排查難度
在寫測試代碼的時候需要考慮以下幾個點:
- 被測試的類名是什么(這個時候就需要考慮類的職責問題了)
- 被測試的API的名字,參數(shù)和返回值(這個時候考慮的是功能點的設計和API的易測性)
- 最容易編寫的測試代碼是調(diào)用一個API介粘,然后通過API的返回值殖氏,調(diào)用Assert進行驗證。所以被測試的API在設計的過程中姻采,如果能符合冪等性雅采,那么測試會更容易做一些。且這個API日后的可維護性也會增強,并且比較容易保證質(zhì)量婚瓜。
這里主要還是強調(diào)類API的設計宝鼓, 雖然大腦會不自覺的考慮到具體算法。但是畢竟沒有真正的寫代碼巴刻,所以還不會陷入到代碼細節(jié)里愚铡。大腦還是比較容易聚焦于設計上
如果一個測試代碼需要多久寫完
- TDD里的測試代碼不一定是一口氣寫完的。有些會根據(jù)后續(xù)的算法和重構胡陪,進行相應的修改
- 一般TDD里的一個循環(huán)(紅->綠->重構)的周期不要太長沥寥,2~3分鐘為一個周期會合適些,這樣在出問題的時候柠座,比較容易縮小范圍邑雅,縮短排查的時間。所以當我們把API的類和函數(shù)寫完后妈经,剩下的測試代碼編寫應該要在短時間內(nèi)就能完成
- 如果單元測試代碼需要寫很久淮野,要有非常多的前置條件滿足,才能測試對應的API吹泡≈栊牵或者在驗證結(jié)果的正確性時,需要很多代碼才有辦法驗證(比如要獲得某個全局變量才能驗證等等)這個時候我們需要考慮:我們的測試力度是否太大了(是否變成了集成測試)荞胡,或者我們的API設計的太復雜了妈踊,不符合冪等性
綜上所述,單元測試代碼越簡單泪漂,也會讓程序員愿意往下接著按TDD的方式寫代碼廊营。否則容易出現(xiàn)的一個現(xiàn)象就是:放棄