Go組隊學習 11 單元測試

2021-10-12 21:59:09 字數 1108 閱讀 8023

測試檔案通常是以xx_test.go命名,放在同一包下面。

單測要點

第一:單元測試的時候,如果有一些列印log資訊,我們執行***_test.go是輸出不出來的,此時需要使用:

go test ***_test.

go-v

使用-v引數可以幫助我們解決此問題。

第二:單測覆蓋率,覆蓋率可以簡單理解為進行單元測試mock的時候,能夠覆蓋的**行數佔總**行數的比率,當然是高一點要好些。可以通過-cover指定

go test ***_test -v -cover
第三:在上述提到的測試方法中我們使用的是(table-driven tests)**驅動型測試,我們看一下**:

tests :=

struct

, b: complex,}

, want:

&complex,}

,}

基準測試

基準測試函式名字必須以benchmark開頭,**在***_test.go中。具體如下:

func

benchmarkcomplex

(t *testing.b)

}

執行:

go test -benchmem -run=

.-bench=

.

輸出:

goos: linux

goarch: amd64

benchmarkcomplex-

820542494

58.9 ns/op 5 b/op 1 allocs/op

pass

ok _

/home/light/go_dev/

go-talent/code/utest 1.272s

20542494表示for迴圈的測試,58.9表示每次需要花費58.9納秒。 -benchmem可以提供每次操作分配記憶體的次數,以及每次操作分配的位元組數。 allocs/op 表示每次操作從堆上分配記憶體的次數。b/op 表示每次操作分配的位元組數。

Go小白入門11 單元測試

需求 完成兩個複數相加 只需乙個函式即完成了該任務。如何對該函式進行功能測試,如何快速進行單元測試呢?go test benchmem run bench addcomplex.go檔案內容 package utest complex x j y type complex struct func a...

go單元測試

go本身提供了一套輕量級的測試框架。mytest工程下有兩個檔案 main.go package main func main func add a,b int intmain test.go package main import testing func testadd1 t testing.t...

Go單元測試

對包含網路請求和響應的函式進行單元測試需要我們模擬客戶端請求和服務端返回。以乙個登入模組為例,main.go檔案如下 其中的重點是利用 http.newrequest構造乙個虛擬的http get請求,再用httptest.newrecorder 建立http.responesewriter,模擬真...