單元測試是質量保證十分重要的一環,好的單元測試不僅能及時地發現問題,更能夠方便地除錯,提高生產效率,所以很多人認為寫單元測試是需要額外的時間,會降低生產效率,是對單元測試最大的偏見和誤解
go 語言原生支援了單元測試,使用上非常簡單,測試**只需要放到以_test.go
結尾的檔案中即可。golang的測試分為單元測試和效能測試,單元測試的測試用例以test
開頭,效能測試以benchmark
開頭
實現排列組合函式對應的單元測試和效能測試
實現排列組合函式
// combination.go
package hmath
func combination(m, n int) int
c := 1
for i := 0; i < n; i++
return c
}
實現單元測試和效能測試// combination_test.go
package hmath
import (
"math/rand"
"testing"
)// 單元測試
// 測試全域性函式,以testfunction命名
// 測試類成員函式,以testclass_function命名
func testcombination(t *testing.t) ,,,
,,,,
,}
}}// 效能測試
func benchmarkcombination(b *testing.b)
}// 併發效能測試
func benchmarkcombinationparallel(b *testing.b)
})}
執行測試go test combination_test.go combination.go # 單元測試
go test --cover combination_test.go combination.go # 單元測試覆蓋率
go test -bench=. combination_test.go combination.go # 效能測試
setup 和 teardown
setup 和 teardown 是在每個 case 執行前後都需要執行的操作,golang 沒有直接的實現,可以通過下面這個方法實現全域性的 setup 和 teardown,具體每個 case 的 setup 和 teardown 需要自己實現
func testmain(m *testing.m)
這個第三方工具會自動幫我們跑測試,並且以非常友好的視覺化介面幫我們展示測試的結果,包括測試失敗的原因,測試覆蓋率等等,內部還提供了很多友好的斷言,能提高測試**的可讀性
使用方法
go get github.com/smartystreets/goconvey
然後用終端在測試**的目錄下執行goconvey
命令即可
測試例子
package package_name
Golang測試 單元測試
1 測試檔案必須以 test.go結尾 2 測試函式名必須以test xx開始 x為對應的需要測試的函式 3 使用go test命令開啟測試 檔名以 test結尾,函式以test開頭,在執行 go test 命令時會自動匹配測試檔案很執行測試函式 1 有時候我們將測試檔案 以 test.go 結尾的...
golang 單元測試框架
自動化生成測試方法 gotests 1.資料庫 mock 2.go check 框架 3.ginkgo 框架 4.各個框架的主要用途 convey 主要用途是用來組織測試用例的 gomock 主要用來給介面打樁的。mockgen可以生成對應的介面測試檔案。gostub 主要用來給變數 函式 過程打樁...
golang 之單元測試
測試是自動化測試的簡稱,即編寫簡單的程式來確保程式 產品 在測試中針對特定輸入產生預期的輸出。go的測試方法看上去相對比較低階,它依賴於命令go test和一些能用go test執行的測試函式的編寫約定 go test 子命令是go語言包的測試驅動程式,這些包根據某些約定組織在一起。在乙個包目錄中,...