在golang項目中進行單元測試

在瀏覽了很多大佬的文章以及接受過數(shù)次線上事故的洗禮之后,我深刻意識到了將代碼放到線上跑之前進行詳盡地測試的重要性,之前一直對單元測試沒有上心,主要精力都放在了設(shè)計和開發(fā)上,后來leader跟我說在進行開發(fā)工作的時候大部分情況只有百分之40的時間用來開發(fā),而測試調(diào)試可能會用百分之六十的時間和精力,然后閱讀了一些資料后,學(xué)習(xí)了一下在做golang開發(fā)的時候怎么對自己的代碼進行單元測試。

在平時寫一些demo的時候測試很簡單,只需要寫一個main方法調(diào)用下寫的函數(shù)就可以驗證功能了。在golang的項目開發(fā)中寫單元測試其實差不多也是這樣,一般來說golang中單元測試代碼可以就和代碼文件放在一個包下,取名代碼“文件名_test.go”。然后對要測試的方法編寫測試用例即可。

一些普通的算法代碼單元測試可能很簡單,就是傳個各種參數(shù)然后校驗一下返回的結(jié)果就可以了。比如下面的例子


簡單的算法函數(shù)測試

但是大部分情況我們寫的代碼可能不只是一個單純的算法,可能會依賴各種數(shù)據(jù)源和接口,比如調(diào)用http接口或是查數(shù)據(jù)庫,這個時候就不是簡單地進行方法調(diào)用和傳參就可以順利跑通測試用例的了。比如


這個時候如果http接口還未提供或者說在測試環(huán)境沒辦法進行調(diào)用,就不能通過上面那種簡單的方法調(diào)用的形式進行單元測試了。這個時候就需要用到mock數(shù)據(jù),簡單來說就是將獲取數(shù)據(jù)源的方法抽象為一個接口,


然后原待測試的方法重構(gòu)一下


然后就可以在真實環(huán)境調(diào)用該方法時傳入實現(xiàn)中調(diào)用真實http接口的ds,在測試時可以直接mock假的接口數(shù)據(jù)以驗證方法的其他邏輯。


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

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