golang 單元測試

2021-09-14 02:51:35 字數 1743 閱讀 8769

單元測試是質量保證十分重要的一環,好的單元測試不僅能及時地發現問題,更能夠方便地除錯,提高生產效率,所以很多人認為寫單元測試是需要額外的時間,會降低生產效率,是對單元測試最大的偏見和誤解

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語言包的測試驅動程式,這些包根據某些約定組織在一起。在乙個包目錄中,...