- #業務代碼
package main import "fmt" func sum(a int,b int) int { return a+b } func main() { fmt.Println("hello test") }
登入後複製
- test測試用例
package main import ( "fmt" "testing" ) func TestSum(t *testing.T) { var a = 3 var b =4 res :=sum(a,b) fmt.Printf("%d 与%d之和:为%d",a,b,res) if res != 7{ t.Error("error") } }
登入後複製
每一個test檔案必須import一個testing.
#test檔案下每一個test case都必須以Test開頭並且符合TestXxx形式,否則go test會直接挑過測試不執行.
-
go test會自動尋找該目錄下的test檔, go test -v會詳細的顯示執行的過程
test case的入參數為t testing.T或b testing.B
t.Error為列印錯誤訊息,並當前test case會被跳過
t.SkipNow()為跳過test,並直接按PASS處理下一個test, 並必須寫在test case的第一行, 否則無效
go的test不會保證多個TestXxx是順序執行,但是通常會按順序執行, 為了,讓起順序執行,可以採用t.Run(name string, f func)來確保順序執行
TestMain(m *testing.M)作為初始化test,並使用m.Run()來呼叫其他tests可以完成一些需要初始化操作testing,例如資料庫連線,檔案開啟,REST服務登陸,如果沒有在testMain呼叫m.Run(),則除了TestMain以外其他test case都不會執行.