微服務(wù)單元測試

什么是單元測試

單元測試是指,對軟件中的最小可測試單元在與程序其他部分相隔離的情況下進(jìn)行檢查和驗(yàn)證的工作,這里的最小可測試單元通常是指函數(shù)或者類。

單元測試通常由開發(fā)工程師完成,一般會伴隨開發(fā)代碼一起遞交至代碼庫。單元測試屬于最嚴(yán)格的軟件測試手段,是最接近代碼底層實(shí)現(xiàn)的驗(yàn)證手段,可以在軟件開發(fā)的早期以最小的成本保證局部代碼的質(zhì)量。

為什么要編寫單元測試

單元測試在的早期就能發(fā)現(xiàn)問題

  • 適應(yīng)變更
  • 簡化集成
  • 文檔記錄
  • 表達(dá)設(shè)計

單元測試都是以自動化的方式執(zhí)行,所以在大量回歸測試的場景下更能帶來高收益。

同時,你還會發(fā)現(xiàn),單元測試的實(shí)施過程還可以幫助開發(fā)工程師改善代碼的設(shè)計與實(shí)現(xiàn),并能在單元測試代碼里提供函數(shù)的使用示例,因?yàn)閱卧獪y試的具體表現(xiàn)形式就是對函數(shù)以各種不同輸入?yún)?shù)組合進(jìn)行調(diào)用,這些調(diào)用方法構(gòu)成了函數(shù)的使用說明。

單元測試還有個好處,就是你可以為所有的產(chǎn)品代碼類寫單元測試,而不需要管它們的功能如何,或者它們在內(nèi)部結(jié)構(gòu)中屬于哪個層次。

哪些代碼需要進(jìn)行單元測試

并不是所有的代碼都要進(jìn)行單元測試,通常只有底層模塊或者核心模塊的測試中才會采用單元測試。

單元測試的范圍

你可以對 controller 進(jìn)行單元測試,也可以用同樣的方式對 repository、領(lǐng)域類或者文件讀寫類進(jìn)行單元測試。

一個單元測試類至少應(yīng)該測試這個類的公共接口。私有方法不能直接測試的原因是你不能從測試類直接調(diào)用它們。受保護(hù)的和包私有的方法可以被測試類直接調(diào)用(如果測試類和生產(chǎn)代碼類的包結(jié)構(gòu)是一樣的),但是測試這些方法可能就太過了。

編寫單元測試有一條細(xì)則:它們應(yīng)該保證你代碼所有的路徑都被測試到(包括正常路徑和邊緣路徑)。同時它們不應(yīng)該和代碼的實(shí)現(xiàn)有太緊密的耦合。

具體的測試方法

https://github.com/jianpingyu/spring-testing

單元測試存在的困難

影響測試策略的因素
  • 緊密耦合的代碼難以隔離
  • 代碼本身的可測試性較差,通常代碼的可測試性和代碼規(guī)模成正比
  • 代碼覆蓋率越往后越難提高

參考資料

單元測試-維基百科
SpringBoot Testing
測試金字塔實(shí)戰(zhàn)
JUnit5
mockito

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容