golang 單元測試覆蓋率

2021-10-13 18:46:24 字數 2421 閱讀 3004

參考單元測試是**質量的重要保證,測試覆蓋率是關鍵的衡量指標。

在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 操作...