1.go的test一般以***_test.go為檔名,***並沒有特別要求是要實測的檔名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)
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
上面的沒有加m.run()然後只執行了,testmain,然後我們把注釋去掉,再看下輸出$ go test -v
tests begins
ok media_action 0.214s
可以看出testall也執行了,並且subtests是按照我們指定的順序執行的。$ 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
1.benchmark函式一般會以benchmark開頭
2.benchmark的case一般會跑b.n,而且每次執行都會如此
3.在執行過程中會根據實際case的執行時間是否穩定會增加b.n的次數
這是乙個最簡單的benchmark函式,看下輸出//也受testmain 控制
func benchmarkall(b *testing.b)
}
要注意如果是要測試乙個非穩態的函式,那麼它可能永遠也執行不完$ 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 會為指定的原始碼檔...