參考單元測試是**質量的重要保證,測試覆蓋率是關鍵的衡量指標。
在golang 中,通過go test 進行單元測試,並可以分析覆蓋率。
首先看下示例**。
新建目錄utils,目錄有以下檔案
ll
total 16
-rw-r--r-- 1 lanyang staff 132b 12 31 21:09 add_hint.go
-rw-r--r-- 1 lanyang staff 360b 12 31 21:09 add_hint_test.go
add_hint.go 檔案內容如下:
package utils
func addprefix(s string) string
func addsuffix(s string) string
add_hint_test.go 檔案內容如下:
package utils
import (
"testing"
"strings"
)func testaddprefix(t *testing.t)
}func testaddsufffix(t *testing.t)
}
以上**分別在字串頭部和尾部分別新增字串字首和字尾。
go test -v -covermode=set -coverprofile=hint_test.out ./
=== run testaddprefix
--- pass: testaddprefix (0.00s)
=== run testaddsufffix
--- pass: testaddsufffix (0.00s)
pass
coverage: 100.0% of statements
ok _/go_exercise/utils 0.007s coverage: 100.0% of statements
從終端輸出,可以看到整體的測試情況。
其中,-covermode
有三種模式:
-coverprofile
是統計資訊儲存的檔案。
這裡指定的輸出檔案是hint_test.out,其內容如下:
mode: set
/go_exercise/utils/add_hint.go:4.33,7.2 1 1
/go_exercise/utils/add_hint.go:11.33,14.2 1 1
生成coverprofile後,當前目錄下檔案列表如下:
ll
total 24
-rw-r--r-- 1 lanyang staff 132b 12 31 21:09 add_hint.go
-rw-r--r-- 1 lanyang staff 457b 1 2 20:37 add_hint_test.go
-rw-r--r-- 1 lanyang staff 164b 1 2 20:38 hint_test.out
上面終端輸出中,可以看到整體的覆蓋率。但沒有每個更具體的覆蓋情況。
下面通過使用剛才生成的profile檔案具體看下覆蓋情況。
(1)檢視每個函式的覆蓋情況:
go tool cover -func=hint_test.out
/go_exercise/utils/add_hint.go:4: addprefix 100.0%
/go_exercise/utils/add_hint.go:11: addsuffix 100.0%
total: (statements) 100.0%
(2)使用網頁方式展示覆蓋率情況
go tool cover -html=hint_test.out
執行命令後,跳出瀏覽器頁面以圖形化的方式展示測試覆蓋情況。
從圖中可以看到,根據顏色就可以分辨出哪些**已覆蓋,哪些**沒覆蓋。
如果需要測試當前目錄下所有package 的單元測試覆蓋情況,可執行
go test -v -covermod=set -coverprofile=all_pkg.out ./...
./...
表示當前目錄及其子目錄下的所有package。
go的測試覆蓋率
go command cover
Gcov單元測試覆蓋率
所謂單元測試覆蓋率是指 的每一行都應該寫單元測試覆蓋到,所以對於每乙個方法都寫乙個單元測試是必須的,另外,如果該方法中存在眾多的 if語句分支,也應該在單元測試中覆蓋到。在c的世界中,可以用 gcov工具計算覆蓋率,它會運動每乙個單元測試,然後統計 每一行的執 況,gcov是最初用來測試 linux...
測試覆蓋率
摘要 在測試方法中粗略的介紹了幾種測試方法。其中,白盒測試的動態分析方法中提到邏輯覆蓋率測試有 語句覆蓋 分支覆蓋 判定覆蓋 條件覆蓋 條件 判定覆蓋和路徑覆蓋。這裡將詳細闡述邏輯覆蓋率測試。準備知識 可執行語句 可執行的一項操作 真 假分支 ture false 運算元 opreand 操作符 o...
測試覆蓋率
摘要 在 測試 方法中粗略的介紹了幾種測試方法。其中,白盒測試 的動態分析方法中提到邏輯覆蓋率測試有 語句覆蓋 分支覆蓋 判定覆蓋 條件覆蓋 條件 判定覆蓋和路徑覆蓋。這裡將詳細闡述邏輯覆蓋率測試。準備知識 可執行語句 可執行的一項操作 真 假分支 ture false 運算元 opreand 操作...