最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、背景

單元測試覆蓋率是衡量代碼質(zhì)量的一個重要指標,重要的代碼文件覆蓋率應該至少達到80%以上。Java 可以通過JaCoCo 統(tǒng)計覆蓋率,那么go 項目如何進行代碼覆蓋率測試呢?

二、統(tǒng)計方式

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

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

項目工程是如下架構的,可以通過這種方式生成覆蓋率報告:

在這里插入圖片描述

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

指令簡單說明:

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

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

run: 正則方式指定需要運行的測試方法

coverpkg: 指定業(yè)務代碼路徑,多個用逗號隔開,詳細說明在后面

./…:遍歷當前目錄下測試文件,包括子目錄

關于為什么要使用coverpkg:

主要是因為我們的項目結(jié)構中,測試代碼和業(yè)務代碼是分開的,而不是放到同一個目錄中。因此如果只指定測試方法,就無法識別到業(yè)務代碼,來計算覆蓋率了。

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

2、打開覆蓋率報告

通過html 文件打開(推薦,能看到方法細節(jié)):

go tool cover -html=coverprofile.cov

在命令行直接查看:

go tool cover -func=coverprofile.cov

三、展望

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

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

相關文章

  • 深入理解Golang中的Protocol Buffers及其應用

    深入理解Golang中的Protocol Buffers及其應用

    本篇文章將深入探討 Go 語言中使用 Protobuf 的基礎知識、常見應用以及最佳實踐,希望能幫大家了解如何在項目中高效利用 Protobuf
    2024-11-11
  • Go語言處理超大字符串型整數(shù)加減經(jīng)典面試詳解

    Go語言處理超大字符串型整數(shù)加減經(jīng)典面試詳解

    這篇文章主要為大家介紹了Go語言處理超大字符串型整數(shù)加減經(jīng)典面試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • go語言遍歷文件夾示例

    go語言遍歷文件夾示例

    這篇文章主要介紹了go語言遍歷文件夾示例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • windows安裝部署go超詳細實戰(zhàn)記錄(實測有用!)

    windows安裝部署go超詳細實戰(zhàn)記錄(實測有用!)

    Golang語言在近年來因為其高性能、編譯速度快、開發(fā)成本低等特點逐漸得到大家的青睞,這篇文章主要給大家介紹了關于windows安裝部署go超詳細實戰(zhàn)的相關資料,需要的朋友可以參考下
    2023-02-02
  • VSCode Golang dlv調(diào)試數(shù)據(jù)截斷問題及處理方法

    VSCode Golang dlv調(diào)試數(shù)據(jù)截斷問題及處理方法

    這篇文章主要介紹了VSCode Golang dlv調(diào)試數(shù)據(jù)截斷問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 淺談Go語言不提供隱式數(shù)字轉(zhuǎn)換的原因

    淺談Go語言不提供隱式數(shù)字轉(zhuǎn)換的原因

    本文主要介紹了淺談Go語言不提供隱式數(shù)字轉(zhuǎn)換的原因,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 詳解Golang 中的并發(fā)限制與超時控制

    詳解Golang 中的并發(fā)限制與超時控制

    這篇文章主要介紹了詳解Golang 中的并發(fā)限制與超時控制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • GO中公平鎖和非公平鎖的具體使用

    GO中公平鎖和非公平鎖的具體使用

    公平鎖和非公平鎖是計算機科學中的兩種鎖機制,它們主要用于多線程編程,以控制對共享資源的訪問,本文主要介紹了GO中公平鎖和非公平鎖的具體使用,感興趣的可以了解一下
    2024-08-08
  • Golang?range?slice?與range?array?之間的區(qū)別

    Golang?range?slice?與range?array?之間的區(qū)別

    這篇文章主要介紹了Golang?range?slice?與range?array?之間的區(qū)別,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Go語言實現(xiàn)JSON解析的神器詳解

    Go語言實現(xiàn)JSON解析的神器詳解

    php轉(zhuǎn)go是大趨勢,越來越多公司的php服務都在用go進行重構,重構過程中,會發(fā)現(xiàn)php的json解析操作是真的香。本文和大家分享了一個Go語言實現(xiàn)JSON解析的神器,希望對大家有所幫助
    2023-01-01

最新評論

汕尾市| 汤阴县| 海盐县| 资溪县| 宁城县| 丹江口市| 南江县| 英超| 虹口区| 汝南县| 晋江市| 卢龙县| 许昌县| 肇源县| 彭水| 汝城县| 万安县| 临泽县| 石台县| 阿鲁科尔沁旗| 拉萨市| 辉南县| 卢氏县| 黑河市| 尤溪县| 普定县| 威宁| 农安县| 衡阳县| 茂名市| 郓城县| 新巴尔虎右旗| 云阳县| 长子县| 棋牌| 宽甸| 木兰县| 临颍县| 兴隆县| 元氏县| 武鸣县|