golang工具 一 測試 單元測試,基準測試

2022-09-21 02:12:08 字數 1787 閱讀 6637

在開發過程中,為了盡早發現**中的缺陷和不住,我們經常要寫單元測試。從而更快速的發現問題並解決問題,單元測試的效率也比傳統手測更高很多。golang的單元測試很簡單,先看乙個例子

用來檢測一些程式邏輯的正確性。

簡單示例

待測函式

package common

func add(a,b int) int

測試函式
package common

import "testing"

func testadd(t *testing.t)

}

執行測試命令

go test -v -run testadd ( 這裡也可以用:go test -v . 執行該包下所有的測試函式, -run 的引數實際上是乙個正規表示式。-v 是顯示測試命令的名稱和執行時間。)

待測函式是乙個加法運算,測試函式分別輸入兩個值然後把執行的結果和預期比對,如果和預期不符,說明我們的待測函式可能有問題,這是輸出errorf。這樣就可以測試我們的待測函式。我們還可以用多組資料來測試。

多組資料

我們可以用乙個陣列來加入多組測試資料

package common

import "testing"

func testadd(t *testing.t) ,

, ,

, }for _,v := range params

}}

用來測試某些操作的效能。

簡單示例

還是對上次的add()函式進行基準測試:

func benchmarkadd(b *testing.b) 

}

執行測試命令

go test -bench=benchmarkadd (-bench :選項執行基準測試,實際上它還有乙個功能就是和 -run 一樣可以跟乙個正規表示式,另外還可以在後面加選項:-benchmem來顯示記憶體分配統計資料: go test -bench=benchmarkadd -benchmem)

測試函式後面的16表示gomaxprocs。一共執行1000000000次,平均耗時0.215 ns/op,消耗記憶體0 b/op,記憶體分配次數0 allocs/op。待測函式沒有分配額為的記憶體,我們再看乙個例子:

用基準測試引導優化

待測函式

package common

// 獲取map[string]int的值

func getmapvalue(a map[string]int) int

return b

}

測試函式
package common

import "testing"

func benchmarkgetmapvalue(b *testing.b)

// 重置了測試時間

b.resettimer()

for i := 0; i < b.n; i++

}

測試結果

總共測試5163984次,平均每次耗時243 ns/op,消耗記憶體248 b/op,分配記憶體次數:5 allocs/op

更改待測函式

package common

func getmapvalue(a map[string]int) int

return b

}

再次測試

這次程式執行時間減少了近一半,記憶體減少了近70%, 分配次數減少了80%。

Golang測試 單元測試

1 測試檔案必須以 test.go結尾 2 測試函式名必須以test xx開始 x為對應的需要測試的函式 3 使用go test命令開啟測試 檔名以 test結尾,函式以test開頭,在執行 go test 命令時會自動匹配測試檔案很執行測試函式 1 有時候我們將測試檔案 以 test.go 結尾的...

golang 單元測試

單元測試是質量保證十分重要的一環,好的單元測試不僅能及時地發現問題,更能夠方便地除錯,提高生產效率,所以很多人認為寫單元測試是需要額外的時間,會降低生產效率,是對單元測試最大的偏見和誤解 go 語言原生支援了單元測試,使用上非常簡單,測試 只需要放到以 test.go結尾的檔案中即可。golang的...

golang 單元測試框架

自動化生成測試方法 gotests 1.資料庫 mock 2.go check 框架 3.ginkgo 框架 4.各個框架的主要用途 convey 主要用途是用來組織測試用例的 gomock 主要用來給介面打樁的。mockgen可以生成對應的介面測試檔案。gostub 主要用來給變數 函式 過程打樁...