當你寫完一個函數,結構體,main之後,你下一步需要的就是測試了。testing包提供了很簡單易用的測試包。
測試檔案的檔案名需要以_test.go為結尾,測試用例需要以testxxxx的樣式存在。
比如我要測試utils包的sql.go中的函數:
就需要建立一個sql_test.go
測試用例有四種形式:
testxxxx(t testing.t) // 基本測試用例
benchmarkxxxx(b testing.b) // 壓力測試的測試用例
example_xxx() // 測試控制台輸出的例子
testmain(m *testing.m) // 測試main函數
給個example的例子:(example需要在最後用注釋的方式确認控制台輸出和預期是不是一緻的)
gotest的變量有這些:
test.short : 一個快速測試的标記,在測試用例中可以使用testing.short()來繞開一些測試
test.outputdir : 輸出目錄
test.coverprofile : 測試覆寫率參數,指定輸出檔案
test.run : 指定正則來運作某個/某些測試用例
test.memprofile : 記憶體分析參數,指定輸出檔案
test.memprofilerate : 記憶體分析參數,記憶體分析的抽樣率
test.cpuprofile : cpu分析輸出參數,為空則不做cpu分析
test.blockprofile : 阻塞事件的分析參數,指定輸出檔案
test.blockprofilerate : 阻塞事件的分析參數,指定抽樣頻率
test.timeout : 逾時時間
test.cpu : 指定cpu數量
test.parallel : 指定運作測試用例的并行數
b : 壓力測試
benchmarkresult : 壓力測試結果
cover : 代碼覆寫率相關結構體
coverblock : 代碼覆寫率相關結構體
internalbenchmark : 内部使用的結構
internalexample : 内部使用的結構
internaltest : 内部使用的結構
m : main測試使用的結構
pb : parallel benchmarks 并行測試使用結果
t : 普通測試用例
tb : 測試用例的接口
t結構内部是繼承自common結構,common結構提供集中方法,是我們經常會用到的:
當我們遇到一個斷言錯誤的時候,我們就會判斷這個測試用例失敗,就會使用到:
當我們遇到一個斷言錯誤,隻希望跳過這個錯誤,但是不希望标示測試用例失敗,會使用到:
當我們隻希望在一個地方列印出資訊,我們會用到:
當我們希望跳過這個用例,并且列印出資訊:
當我們希望斷言失敗的時候,測試用例失敗,列印出必要的資訊,但是測試用例繼續:
當我們希望斷言失敗的時候,測試用例失敗,列印出必要的資訊,測試用例中斷: