go test 單元測試


go test 注釋后必須多空出一行,也就是 // 下一行要預留為空行,否則go解析的時候會把下一行解析成注釋

 

1. 條件build 舉例

 a.go

// +build !test
    ...todo code

 b.go

//+build test
    ...todo code

上面兩個go文件,在執行 go build -tags "test" 的時候,實際上是只執行 b.go 

+build 是值得條件變異,test指的是 -tags 后的內容 符號 ! 是 “非” 的意思

 

2. go test 最大操作方位:包 包

//在packageName目錄下,包與包用空格間隔
go test -tags "test" funnel/tasks net/http

 上述代碼中,funnel/task 和 net/http 分別是兩個包

 

3. go test 最小操作范圍: func

go test -run=TestFunctionName
//測試當前包下面的TestFunctionName函數

 上述內容中,TestFunctionName 是函數名,函數測試必須遵循下面幾點

  • 測試文件需要與被測試文件保持同級目錄(這也是go test中所有測試用例的規范):demo.go  demo_test.go
  • 文件命名規則:被測試文件的文件名_test.go
  • 測試函數明明:Test+測試場景的函數名(t *testing.T)
  • 一個test.go文件內,可以包含多個測試場景
  • 一個包中的抽象出的公共測試函數,以包名_test.go命名文件

4. go test 常用命令列表

  • -v 無論用力是否測試通過,都會顯示結果,不加 "-v" 表示只顯示未通過的用例
  • -run 測試某個函數比如 go test -run = TestFunctionName
  • -cover 輸出測試代碼覆蓋率
  • -c 變異pkg.test 但不執行
  • -i 安裝測試依賴的package包,但不運行
  • -o 制定用於測試的課執行文件的名稱
  • t.Log, t.Logf 打印正常信息
  • t.Error,t.Errorf 打印錯誤信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM