欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang使用go test輸出單元測(cè)試覆蓋率的方式

 更新時(shí)間:2024年02月28日 10:07:25   作者:xiaoliizi  
單元測(cè)試覆蓋率是衡量代碼質(zhì)量的一個(gè)重要指標(biāo),重要的代碼文件覆蓋率應(yīng)該至少達(dá)到80%以上,Java 可以通過(guò)JaCoCo 統(tǒng)計(jì)覆蓋率,那么go 項(xiàng)目如何進(jìn)行代碼覆蓋率測(cè)試呢,本文將給大家詳細(xì)的介紹一下golang使用go test輸出單元測(cè)試覆蓋率的方式,需要的朋友可以參考下

一、背景

單元測(cè)試覆蓋率是衡量代碼質(zhì)量的一個(gè)重要指標(biāo),重要的代碼文件覆蓋率應(yīng)該至少達(dá)到80%以上。Java 可以通過(guò)JaCoCo 統(tǒng)計(jì)覆蓋率,那么go 項(xiàng)目如何進(jìn)行代碼覆蓋率測(cè)試呢?

二、統(tǒng)計(jì)方式

1、生成覆蓋率報(bào)告(go test 指令)

我們知道直接執(zhí)行測(cè)試代碼的指令: go test 指定文件名稱 -run “測(cè)試方法”。

項(xiàng)目工程是如下架構(gòu)的,可以通過(guò)這種方式生成覆蓋率報(bào)告:

在這里插入圖片描述

go test -mod=vendor -covermode=count -coverprofile=coverprofile.cov -run="^Test" -coverpkg=$(go list -mod=vendor ./... | grep -v "/test" | tr '\n' ',') ./...

或 非 vendor 模式:
go test -covermode=count -coverprofile=coverprofile.cov -run="^Test" -coverpkg=$(go list ./... | grep -v "/test" | tr '\n' ',') ./...

生成結(jié)果:coverprofile.cov

指令簡(jiǎn)單說(shuō)明:

mod=vendor: 加載依賴的方式:從本地vendor 目錄加載。適用于服務(wù)器不能從外網(wǎng)下載依賴的情況

covermode: count: 統(tǒng)計(jì)代碼訪問(wèn)次數(shù);set: 統(tǒng)計(jì)代碼是否被訪問(wèn); atomic: 一般在并發(fā)工程中使用(?)

run: 正則方式指定需要運(yùn)行的測(cè)試方法

coverpkg: 指定業(yè)務(wù)代碼路徑,多個(gè)用逗號(hào)隔開(kāi),詳細(xì)說(shuō)明在后面

./…:遍歷當(dāng)前目錄下測(cè)試文件,包括子目錄

關(guān)于為什么要使用coverpkg:

主要是因?yàn)槲覀兊捻?xiàng)目結(jié)構(gòu)中,測(cè)試代碼和業(yè)務(wù)代碼是分開(kāi)的,而不是放到同一個(gè)目錄中。因此如果只指定測(cè)試方法,就無(wú)法識(shí)別到業(yè)務(wù)代碼,來(lái)計(jì)算覆蓋率了。

因此我們既需要指定測(cè)試代碼路徑(當(dāng)然這里聲明為 ./… 就可以了,只有_test 結(jié)尾的方法會(huì)自動(dòng)作為測(cè)試方法),也需要指定業(yè)務(wù)代碼路徑(通過(guò)grep -v 和 tr 指令,最終將業(yè)務(wù)代碼輸出成 git/controller,git/database 的格式)

2、打開(kāi)覆蓋率報(bào)告

通過(guò)html 文件打開(kāi)(推薦,能看到方法細(xì)節(jié)):

go tool cover -html=coverprofile.cov

在命令行直接查看:

go tool cover -func=coverprofile.cov

三、展望

當(dāng)然我們可能會(huì)遇到一些特殊情況:比如不希望將init 方法也列入統(tǒng)計(jì)等等,這些后續(xù)再補(bǔ)充。

到此這篇關(guān)于golang使用go test輸出單元測(cè)試覆蓋率的方式的文章就介紹到這了,更多相關(guān)go test單元測(cè)試覆蓋率內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go語(yǔ)言中的指針自動(dòng)解引用

    go語(yǔ)言中的指針自動(dòng)解引用

    Go語(yǔ)言中,編譯器會(huì)自動(dòng)解引用指針來(lái)訪問(wèn)字段,自動(dòng)解引用使得使用指針訪問(wèn)結(jié)構(gòu)體字段和方法變得更加直觀,降低了編程錯(cuò)誤的風(fēng)險(xiǎn),并使代碼更易于理解和維護(hù)
    2024-10-10
  • GO語(yǔ)言中embed簡(jiǎn)介

    GO語(yǔ)言中embed簡(jiǎn)介

    這篇文章主要介紹了GO語(yǔ)言中embed簡(jiǎn)介的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • Go并發(fā)原語(yǔ)之SingleFlight請(qǐng)求合并方法實(shí)例

    Go并發(fā)原語(yǔ)之SingleFlight請(qǐng)求合并方法實(shí)例

    本文我們來(lái)學(xué)習(xí)一下 Go 語(yǔ)言的擴(kuò)展并發(fā)原語(yǔ):SingleFlight,SingleFlight 的作用是將并發(fā)請(qǐng)求合并成一個(gè)請(qǐng)求,以減少重復(fù)的進(jìn)程來(lái)優(yōu)化 Go 代碼
    2023-12-12
  • Go語(yǔ)言死鎖與goroutine泄露問(wèn)題的解決

    Go語(yǔ)言死鎖與goroutine泄露問(wèn)題的解決

    最近在工作中使用golang編程,今天的文章給大家分享一下Go語(yǔ)言死鎖與goroutine泄露問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Golang棧結(jié)構(gòu)和后綴表達(dá)式實(shí)現(xiàn)計(jì)算器示例

    Golang棧結(jié)構(gòu)和后綴表達(dá)式實(shí)現(xiàn)計(jì)算器示例

    這篇文章主要為大家介紹了Golang棧結(jié)構(gòu)和后綴表達(dá)式實(shí)現(xiàn)計(jì)算器示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go+Redis實(shí)現(xiàn)延遲隊(duì)列實(shí)操

    Go+Redis實(shí)現(xiàn)延遲隊(duì)列實(shí)操

    這篇文章主要介紹了Go+Redis實(shí)現(xiàn)延遲隊(duì)列實(shí)操,延遲隊(duì)列是一種非常使用的數(shù)據(jù)結(jié)構(gòu),我們經(jīng)常有需要延遲推送處理消息的場(chǎng)景,比如延遲60秒發(fā)送短信,延遲30分鐘關(guān)閉訂單,消息消費(fèi)失敗延遲重試等
    2022-09-09
  • Golang unsafe包中的類型和函數(shù)詳解

    Golang unsafe包中的類型和函數(shù)詳解

    Golang中的unsafe包用于在運(yùn)行時(shí)進(jìn)行低級(jí)別的操作,這些操作通常是不安全的,因?yàn)榭梢源蚱艷olang的類型安全性和內(nèi)存安全性,使用 unsafe包的程序可能會(huì)影響可移植性和兼容性,接下來(lái)看下unsafe包中的類型和函數(shù)
    2023-08-08
  • 一文帶你全面掌握Go語(yǔ)言中的正則表達(dá)式

    一文帶你全面掌握Go語(yǔ)言中的正則表達(dá)式

    正則表達(dá)式是一種強(qiáng)大的模式匹配工具,能夠在文本中進(jìn)行靈活的搜索和替換操作,本文將介紹?Golang?中的正則表達(dá)式語(yǔ)法,包括常用的匹配符號(hào)、模式修飾符以及示例應(yīng)用,希望對(duì)大家有所幫助
    2023-05-05
  • golang實(shí)現(xiàn)微信支付v3版本的方法

    golang實(shí)現(xiàn)微信支付v3版本的方法

    這篇文章主要介紹了golang實(shí)現(xiàn)微信支付v3版本的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • ?Go?語(yǔ)言實(shí)現(xiàn)?HTTP?文件上傳和下載

    ?Go?語(yǔ)言實(shí)現(xiàn)?HTTP?文件上傳和下載

    這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)HTTP文件上傳和下載,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09

最新評(píng)論