一.與傳統(tǒng)開發(fā)的區(qū)別
正常的開發(fā)流程:先開發(fā)界面或類,然后在進行編碼測試
? ?即:項目代碼開發(fā) -> 編寫測試用例 –> 運行測試用例 -> 修復代碼BUG
而TDD:首先是進行測試用例的編寫锡溯,然后再進行類或者用戶界面的開發(fā)硼补。
? 即:編寫測試用例 -> 運行測試用例 –> 編寫項目代碼 -> 運行測試用例 -> 重構(gòu)代碼
二.原理
? ?測試驅(qū)動開發(fā)的基本思想就是在開發(fā)功能代碼之前甜刻,先編寫測試代碼懈贺。也就是說在明確要開發(fā)某個功能后犀忱,首先思考如何對這個功能進行測試,并完成測試代碼的編寫拜银,然后編寫相關的代碼滿足這些測試用例殊鞭。然后循環(huán)進行添加其他功能,直到完全部功能的開發(fā)尼桶。
三.特征
? ? 1.與其他代碼相隔離:單元測試只測試一件事操灿,否則應該懷疑是否是測試內(nèi)容有誤
? ? ? 2. 與其他開發(fā)人員隔離:保證最小化的變量影響單元測試,也就是控制變量法疯汁。逐漸形成了模擬框架以及依賴注入框架等輔助工具牲尺。
? ? ? ?3.有針對性:要做有意義的測試,保證完成那些功能或方法幌蚊。
? ? ? ?4. 可重復:單元測試的最大優(yōu)勢就是可重復谤碳,這也是持續(xù)集成的意義所在。
? ? ? ?5.可預測:單元測試保證的是---確定的輸入得到肯定的輸出溢豆。
四.測試方式
? ? ? ?1.單元測試:針對一個基礎類進行輸入/輸出測試
? ? ? ? ? ? ?主要是工具:NUnit蜒简、MSTest
? ? ? ?2.框架測試:測試一個方法而不對其他發(fā)展產(chǎn)生影響或者被影響
主要工具:Rhino Mock、Type Mock漩仙、Moq
五.過程
制定TODO列表—>快速完成測試用例編寫—>測試代碼編譯不通過—>編寫對應功能代碼—>測試通過—>重構(gòu)—>循環(huán)開發(fā) ? ?