Golang中內置了對單元測試的支持,不須要像Java同樣引入第三方Jar才能進行測試,下面將分別介紹Golang所支持的幾種測試;windows
Golang中單元測試有功能測試、基準測試、示例測試或稱示例函數三種;
功能測試必須以TestXXX函數名出現,基準測試必須以BenchmarkXXX函數名出現,示例函數必須以ExampleXXX函數名出現。架構
//功能測試 func TestXXX(t *testing.T){ } //基準測試 func BenchmarkXXX(b * testing.B){ } //示例函數 func ExampleXXX(){ }
函數名:TestXxx,以Test爲前綴的功能測試函數
參數類型:*testing.T併發
功能函數:函數
func(a, b int) Mul { return b * b }
測試函數:性能
func TestMul(t *testing.T) { arr := [...]int{2, 4, 6} expected := []int{8, 12} for j := 0; j < 2; j++ { result := Add(arr[j], arr[j+1]) if result != expected[j] { //失敗後中止後序邏輯 t.Fatalf("input is %d, the expected is %d, the actual %d", arr[j], expected[j], result) //失敗後繼續執行後序邏輯 //t.Errorf("input is %d, the expected is %d, the actual %d", arr[j], expected[j], result) } } }
用於對程序功能進行可定量、可對比的性能測試;
函數名:BenchmarkXxx,以Test爲前綴的測試功能函數
參數類型:*testing.B單元測試
func BenchmarkMul(b *testing.B) { for i := 0; i < b.N; i++ { Mul(i, i) } }
執行結果:測試
goos: windows goarch: amd64 pkg: solinx.co/LCache/test BenchmarkMul-12 1000000000 0.323 ns/op PASS coverage: 100.0% of statements ok solinx.co/LCache/test 0.499s
結果分析:
執行執行環境:windows
架構:amd64
包路徑
BenchmarkMul-12:總共12個邏輯cpu
函數執行時間 0.499秒
測試代碼覆蓋率:100%code
3、示例測試blog
func ExampleMul() { a := Mul(2, 2) fmt.Println(a) //Output: 41 }
輸出內容到標準輸出,參數沒有限制;go test執行時會監測實際輸出與註釋中的指望結果是否一致,一致時測試經過,不一致則測試失敗;get
經過:
失敗:
=== RUN ExampleMul --- FAIL: ExampleMul (0.00s) got: 4 want: 41 FAIL coverage: 100.0% of statements
獲得了:4,須要的是:41 測試失敗;
-count: 設置執行測試函數的次數, 默認 1
-run: 執行功能測試函數, 可正則匹配
-bench: 執行基準測試函數, 可正則匹配
-benchtime: 基準測試最大探索時間
-parallel: 設置功能測試函數最大併發執行數
-v: 是展現測試過程信息
-cover:顯示測試代碼覆蓋率
-list : 列出所匹配的測試函數,不執行
執行與Test匹配的測試函數
go test -run Test
文章首發地址:Solinx
https://mp.weixin.qq.com/s/nqnXiOT_CfD6qWeE6xsrhw