寫在前面:
testing.T用來進行單元測試,*testing.B用來進行壓力測試,檢測函數的性能
go test
命令只能在一個相應的目錄下執行所有文件,所以在一個目錄下面創建兩個文件,分別是代碼文件和測試文件:gotest.go和gotest_test.go
1.單元測試
a.文件名必須是_test.go
結尾的,這樣在執行go test
的時候才會執行到相應的代碼
b.你必須import testing
這個包
c.所有的測試用例函數必須是Test
開頭
d.測試用例會按照源代碼中寫的順序依次執行
e.測試函數TestXxx()
的參數是testing.T
,我們可以使用該類型來記錄錯誤或者是測試狀態
f.測試格式:func TestXxx (t *testing.T)
,Xxx
部分可以為任意的字母數字的組合,但是首字母不能是小寫字母[a-z],例如Testintdiv
是錯誤的函數名
g.函數中通過調用testing.T
的Error
, Errorf
, FailNow
, Fatal
, FatalIf
方法,說明測試不通過,調用Log
方法用來記錄測試的信息
2.壓力測試
a.壓力測試的格式:func BenchmarkXXX(b *testing.B) { ... },其中函數命名以Benchmark開頭,XXX首字母必須大寫
b.go test
不會默認執行壓力測試的函數,如果要執行壓力測試需要帶上參數-test.bench
,語法:-test.bench="test_name_regex"
,例如go test -test.bench=".*"
表示測試全部的壓力測試函數
c.在壓力測試用例中,請記得在循環體內使用testing.B.N
,以使測試可以正常的運行
d.文件名也必須以_test.go
結尾
執行:go test -bench BenchmarkXXX