目錄
單元測試
指對軟件中的最小可測試單元進行檢查和驗證,對於面向對象編程,最小單元就是方法,包括基類(超類)/抽象類/派生類(子類)中的方法
合格的單元測試
1.測試的是一個代碼單元內部的邏輯,而不是各模塊之間的交互
2.獨立,不需要外部環境即可測試代碼,可以隨時隨地執行
3.要高效,可快速執行
4.要可迴歸,可以重複執行
單測幹什麼
1.可更好地保證代碼符合預期行爲
2.單元測試讓我們更早得到反饋,提前發現問題
3.單元測試是重構的基礎,驗證重構是否可靠
4.應用於持續繼承流程,對每次代碼提交做迴歸測試
5.對程序結構要求更高,會讓程序的結構更合理
6.編寫易測試的代碼需要更高的設計水平,會提高程序員的代碼設計能力
單測編寫規範
1.測試類命名
測試類應該放在src/test/java目錄下,與源碼目錄隔離,測試類包名最好與源碼相對應,創建測試類名需在源碼類後加上後綴Test或TestCase,一般選擇前者,
eg:源文件TSettleAdminServiceImpl.java,測試類TSettleAdminServiceImplTest.java,注意,新建測試文件,右鍵類名-->Generate-->Test-->選擇方法
2.測試方法命名
每個測試方法都要在源文件方法的基礎上,加前綴test,eg,源文件方法名稱inquireMerchantTheNewestSettlePeriodBatch,測試方法名稱testInquireMerchantByCustomerAndSettlePeriod
3.測試資源
測試資源文件都需要存放在src/test/resources目錄下,配置文件獨立配置一套作爲測試所用,和源碼資源文件隔離開,最好不要引用源資源文件
單測覆蓋粒度
1.通用的業務組件或工具類
2.內外部接口
3.包含重要邏輯的service
4.不包括自動生成的代碼部分
單測執行策略
1.項目排期一定要預留單測時間
估計開發工作量使,應該結合自身的能力並留出單元測試的時間,eg,純開發工作的人天爲N,加上UT則至少需要2N時間
2.儘早進行單元測試,邊寫功能,邊寫測試
3.週期性對代碼進行評審,不斷補充需要進行單測的代碼
4.對於新增加的功能和修改的功能要進行完善單元測試
5.對於新發現的bug,也應增加相應的單元測試
如何寫好單元測試
1.趁早:時機-接入越早越好
根據UT開始時間來分:測試驅動開發TDD,邊測試邊開發,開發完再測試,對UT比較熟悉的人員建議採用TDD:
面向測試的設計可以更好地分離關注點;測試越早越能儘早發現缺陷;可以把自己作爲使用者二非僅僅是實現者,可改善接口
2.覆蓋:單測的內容-場景考慮要全面
驗證接口的入參和結果;驗證程序邊界條件;驗證程序異常情況;驗證程序執行路徑
3.獨立:目標與環境的隔離-體輕跑得快
可通過Mock實現測試目標與環境的隔離