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