go test常用介紹

2021-09-05 08:45:58 字數 1963 閱讀 6909

package main

import (

"testing"

"fmt"

)func testprint(t *testing.t)

fmt.println(ret)

}func testprint2(t *testing.t)

ret++

fmt.println(ret)

}func testall(t *testing.t)

func testmain(m *testing.m)

1.go的test一般以***_test.go為檔名,***並沒有特別要求是要實測的檔名

2.tes檔案裡要測試的函式要大寫test***(t* testing.t)或者test***(b* testing.b) 

3.t.errorf("")為列印錯誤資訊,並且當前test case會被跳過 

4.t.skipnow()跳過當前test,並且直接按pass處理繼續下乙個test

5.使用t.run來執行subtests可以做到控制test輸出以及test的順序

6.testmain作為初始化test , 並且使用m.run()來呼叫其他tests可以完成一些需要初始化操作的testing,比如資料庫鏈結,檔案開啟,rest服務登入

7.如果沒有testmain中呼叫m.run()則除了testmain()以外的其他test都不會執行,如果沒有重寫testmain()那麼預設都會執行test

$ go test -v

tests begins

ok media_action 0.214s

上面的沒有加m.run()然後只執行了,testmain,然後我們把注釋去掉,再看下輸出

$ go test -v

tests begins

=== run testall

=== run testall/testprint

2=== run testall/testprint2

3--- pass: testall (0.00s)

--- pass: testall/testprint (0.00s)

--- pass: testall/testprint2 (0.00s)

pass

ok media_action 0.310s

可以看出testall也執行了,並且subtests是按照我們指定的順序執行的。

1.benchmark函式一般會以benchmark開頭

2.benchmark的case一般會跑b.n,而且每次執行都會如此

3.在執行過程中會根據實際case的執行時間是否穩定會增加b.n的次數

//也受testmain 控制

func benchmarkall(b *testing.b)

}

這是乙個最簡單的benchmark函式,看下輸出

$ go test  -bench=.

tests begins23

goos: windows

goarch: amd64

pkg: media_action

benchmarkall-4 2000000000 0.38 ns/op

pass

ok media_action 1.059s

要注意如果是要測試乙個非穩態的函式,那麼它可能永遠也執行不完

$ go test  -bench=.

tests begins23

goos: windows

goarch: amd64

pkg: media_action

benchmarkall-4

它就會卡在這裡。。。。。。

10 go test單元測試

之前看了go官方的github上關於golang的單元測試,現在總結一下關鍵的地方。單個測試 檔名必須是 test.go結尾的,這樣在執行go test的時候才會執行到相應的 你必須import testing這個包 所有的測試用例函式必須是test開頭 測試用例會按照源 中寫的順序依次執行 測試格...

go Test 單元測試 測試框架

1.建立乙個名為 test.go 的檔案 如果是包中的單元測試,就在包所在目錄下建立該檔案 並將下面的 新增到其中,函式命名統一為test t testing.t package main 包中的單元測試main替換成包名 import testing func testsum t testing....

go test 測試單個檔案報錯問題

golang 在進行整個專案測試的時候沒有問題,但是在測試單個檔案的時候經常會報錯,報錯一些函式undefined build failed,構建失敗,我們應該就能看出一下資訊。go test與其他的指定原始碼檔案進行編譯或執行的命令程式一樣 參考 go run和go build 會為指定的原始碼檔...