golang單元測試簡述

  Golang中內置了對單元測試的支持,不須要像Java同樣引入第三方Jar才能進行測試,下面將分別介紹Golang所支持的幾種測試;windows

1、測試類型

  Golang中單元測試有功能測試、基準測試、示例測試或稱示例函數三種;
  功能測試必須以TestXXX函數名出現,基準測試必須以BenchmarkXXX函數名出現,示例函數必須以ExampleXXX函數名出現。架構

//功能測試
func TestXXX(t *testing.T){
}

//基準測試
func BenchmarkXXX(b * testing.B){
}

//示例函數
func ExampleXXX(){
}

2、功能測試

  函數名: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)
       }
    }
}

2、基準測試

  用於對程序功能進行可定量、可對比的性能測試;
  函數名: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 測試失敗;

4、go test 參數介紹

  -count: 設置執行測試函數的次數, 默認 1
  -run: 執行功能測試函數, 可正則匹配
  -bench: 執行基準測試函數, 可正則匹配
  -benchtime: 基準測試最大探索時間
  -parallel: 設置功能測試函數最大併發執行數
  -v: 是展現測試過程信息
  -cover:顯示測試代碼覆蓋率
  -list : 列出所匹配的測試函數,不執行

執行與Test匹配的測試函數

go test -run Test

文章首發地址:Solinx
https://mp.weixin.qq.com/s/nqnXiOT_CfD6qWeE6xsrhw

相關文章
相關標籤/搜索