golang單元測試用法

單元測試文件名必須是
XXX_test.go

而後引用testing這個包


而後每一個測試函數名必須是以TestXXX開頭


左側會有綠色箭頭,說明這個單元測試的函數是能夠運行的

測試結果


單元測試函數必需要有testing的參數,不然會報錯


錯誤信息:


看這個單元測試


運行結果是
fail


t.SkipNow()爲跳過當前test,而且直接按PASS處理繼續下一個test數據庫

這個t.SkipNow()必須寫在測試函數的第一行,不然不起做用


運行結果:


多個單元測試的執行順序

Go的test不會保證多個TestXxx是順序執行,可是一般會按順序執行函數

這個時候咱們可使用t.Run來執行subtests能夠作到控制test
輸出以及test的順序

看下面的示例:


這個時候運行全部的
test

運行結果:


而後把上面的單元測試改成小寫的
t


運行
TestAll
單元測試,能夠運行兩個子單元測試,而且能夠控制執行順序,運行結果:

TestMain
性能

使用

使用 TestMain做爲初始化test,而且使用m.Run()來調用其餘tests
能夠完成一些須要初始化操做的testing,好比數據庫鏈接,文件打開,REST
服務登陸等

若是沒有在
TestMain
中調用
m.Run
()則除了
TestMain
之外的其餘
tests
都不會被執行

加了這個主測試函數


若是不加
m.Run
()就只會執行
TestMain
這個函數

運行結果:



添加
m.Run
方法後就會先執行
TestMain
測試函數,而後會繼續執行其餘的單元測試

運行結果:


Benchmark單元測試

用法

Benchmark測試

也是單元測試的一種,這個函數主要是測試代碼的性能

測試函數必需要
Benchmark
開頭,而且參數是
testing.B
的指針類型


測試結果


在每次運行這個測試函數的時候,每回的
n
的數值是不斷變化的,來知足對性能測試的要求

因此不要修改
n
的值,不然不斷變的
n
值,測試函數會不斷調整這個
n
值,來知足對性能測試的要求

看下面的示例:


被測試的函數中的
n
值在不斷變化,致使測試函數中的
n
也在不斷變化,最後的結果就是在不斷調整
n
的值來知足性能的測試,因此就會一直在測試,沒有結果輸出

測試結果:

相關文章
相關標籤/搜索