單元測試
什麽是單元測試
單元測試, 用於驗證你的應用程序是否可以按照預期的方式正常運行.
主要通過Mock或者Stub機制來隔絕與其他組件/服務之間的依賴, 控制測試的邊界, 從而針對一個個單獨的類或方法進行代碼檢查與測試.
為什麽需要單元測試
因為每個單元(類或方法)都是整個系統的基石.
當實施單元測試時, 雖然短期來會對生產效率造成影響, 但是由於實施單元測試後, 項目的質量會得到提升, 從而避免了後期的維護和修改缺陷的花費, 所以從長遠的角度來說, 實施單元測試有助於提高項目的生產效率.
並且由於實施單元測試, 問題將會被提前找出, 改變了以往沒有單元測試時, 所有問題都集中到項目最後爆發的弊端.
從以上幾點我們可以得出: 單元測試=提高質量+提高生產效率+降低開發和測試成本+改善工作流程
單元測試帶來的好處
1. 帶來更高的測試覆蓋率: 單元測試可以很容易地模擬錯誤條件, 模擬各種有可能的情況, 從而提高代碼的穩健性.
2. 提高團隊效率: 單元測試可以讓你在"功能測試"前提交 高質量/經過測試的代碼, 避免在整體功能測試時遇到問題, 從而避免需要重復修改.
3. 輔助監管: 一組成功的通過的單元測試可以確認您的代碼能正確運行, 或在你做得不對的時候及時提醒你.
4. 減少調試: 一組良好的單元測試將會減少調試應用程序來找錯誤的機會與所消耗的時間.
5. 給予重構的信心: 如果沒有單元測試的話, 要證明重構是否成功將會是一件非常困難的事情, 單元測試提供了一個安全網, 為你的重構提供信心.
6. 找出需改進的部分: 通過管理單元測試, 可找出被測試的代碼是否存在設計上的問題, 是否需要改進代碼, 或是否需要重構.
7. 提供完美的代碼示例: 單元測試可以完美的提供應用程序中的代碼是如何使用的, 提供給其他開發人員一個使用示例.
8. 啟用代碼覆蓋率與其他指標: 提供諸如代碼覆蓋率, 代碼的性能, 應用程序的執行速度等數據.
單元測試隔絕依賴的兩種機制
Stub: 用來模擬一個外部的依賴.
Mock: 用來屏蔽一個外部的依賴.
註意: 在單元測試中我們總習慣使用這兩種機制來隔絕外部依賴, 但是請避免過度隔絕依賴, 這會導致你的測試完整性降低, 導致當外部的依賴發生改變時, 你的測試代碼也沒有檢測出來.
單元測試