單元測試的作用
單元測測試的目的在于驗證一個明確的功能【一般是某個或者某組函數(shù)在特定條件下的行為】是否正確流译。
為什么要單元測試
- 有助于提高代碼的設(shè)計
- 有助于提高重構(gòu)信心和質(zhì)量
- 有助于幫助理解代碼
- 有助于發(fā)現(xiàn)bug和調(diào)試
單元測試軍規(guī)
步驟簡單
- Setup
- 調(diào)用
- 斷言
- TearDown
用例名稱具有自描述
單元測試應(yīng)該成為開發(fā)文檔绽族。
運行快速
單個用例執(zhí)行時間要保證在毫秒級,這樣才能保證在重構(gòu)的時候快速小步前進(jìn)屎开。
原子性
測試結(jié)果要么失敗,要么成功马靠,沒有部分成功失敗的說法奄抽。
冪等性
測試用例無論被執(zhí)行多少次,結(jié)果都是一樣的甩鳄。
單一職責(zé)
每個測試用例都只測試一種行為逞度,注意這里說的是行為,而不是方法妙啃。
獨立性
測試用例之間互不耦合档泽,不能互相影響,盡量不要共享代碼彬祖, 如果一定要共享代碼應(yīng)該放置在Setup函數(shù)中茁瘦。
隔離依賴
要做到以上幾點,必須隔離依賴储笑,包括數(shù)據(jù)庫訪問甜熔,網(wǎng)絡(luò)訪問,讀寫文件突倍,對用第三方資源等腔稀。
Mock依賴對象并注入
要求面向接口接口,不直接創(chuàng)建依賴對象羽历,而是Mock依賴對象并注入焊虏。