亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go工具鏈之代碼測試神器go?test詳解

 更新時(shí)間:2023年07月20日 08:59:20   作者:路多辛  
這篇文章主要給大家介紹Go?工具鏈go?test,go?test?是?Go?工具鏈中的一個(gè)命令,用于編譯和運(yùn)行按照要求編寫的?Golang?測試代碼,并生成測試報(bào)告,感興趣的同學(xué)跟著小編一起來看看本文吧

go test 作用

go test 是 Go 工具鏈中的一個(gè)命令,用于編譯和運(yùn)行按照要求編寫的 Golang 測試代碼,并生成測試報(bào)告。

要求將測試代碼所在的文件命名為 *_test.go,如此命名的文件不會(huì)被 go build 命令編譯,但是會(huì)被 go test 進(jìn)行編譯和運(yùn)行。在 *_test.go 中有幾種類型的函數(shù):

  • 單元測試函數(shù):以 Test 為函數(shù)名的前綴,用于測試程序的邏輯行為,參數(shù)必須是t *testing.T,無返回值。
  • 基準(zhǔn)測試函數(shù):以 Benchmark 為函數(shù)名的前綴,用于測試程序的性能,參數(shù)必須是 b *testing.B,無返回值。
  • 模糊測試函數(shù):以 Fuzz 為函數(shù)名的前綴,用于測試程序的健壯性,參數(shù)必須是 f *testing.F,無返回值
  • 示例函數(shù):以 Example 為函數(shù)名的前綴,用于提供示例文檔,沒有參數(shù)和返回值。

go test 使用方法和使用示例

go test 的使用方法比較簡單,在項(xiàng)目的根目錄或者某個(gè)包下直接運(yùn)行如下命令:

go test 

go test 將會(huì)編譯和運(yùn)行當(dāng)前項(xiàng)目或者當(dāng)前包下所有的測試代碼,并輸出測試結(jié)果。

可以通過指定包或測試文件的路徑來運(yùn)行特定的測試,可以指定多個(gè),也可以使用通配符進(jìn)行匹配。例如:

go test [packages]
go test xxx.go

以下是一些常用的參數(shù)說明:

  • -v:顯示詳細(xì)的測試輸出,包括每個(gè)測試用例的名稱和結(jié)果。
  • -run:指定要運(yùn)行的測試函數(shù)的正則表達(dá)式。
  • -cover:同時(shí)進(jìn)行代碼覆蓋率分析,顯示代碼被執(zhí)行的情況。
  • -coverprofile:將代碼覆蓋率分析的結(jié)果輸出到指定文件中。
  • -count:指定測試的運(yùn)行次數(shù),默認(rèn)為 1 次。
  • -timeout:設(shè)置測試的運(yùn)行超時(shí)時(shí)間。
  • -bench:運(yùn)行與性能測試有關(guān)的基準(zhǔn)測試。
  • -benchmem:在運(yùn)行基準(zhǔn)測試時(shí)顯示內(nèi)存分配的統(tǒng)計(jì)信息。

這里要著重講解一下 -coverprofile 參數(shù),這個(gè)參數(shù)可以將測試用例的代碼覆蓋結(jié)果輸出到指定文件中,然后可以借助 go tool cover 來做具體的分析。來看一下帶上 -coverprofile 參數(shù)的效果,以 github.com/luduoxin/json-validator-go 項(xiàng)目為例,clone 代碼后,切換到項(xiàng)目的 validator 目錄,打開終端,執(zhí)行如下命令:

 $ go test -coverprofile=c.out

截取 c.out 的前兩行內(nèi)容如下:

mode: set
github.com/luduoxin/json-validator-go/validator/scanner.go:11.30,15.2 3

第二行每個(gè)部分代表的意思如下:

"文件:起始行.起始列,結(jié)束行.結(jié)束列 該基本塊中的語句數(shù)量 該基本塊被執(zhí)行到的次數(shù)"

搞清楚這個(gè)輸出內(nèi)容的格式可以做很多事情,例如自己做工具來統(tǒng)計(jì)長時(shí)間運(yùn)行的項(xiàng)目的測試覆蓋率,就可以在執(zhí)行測試用例的過程中,先生成此種格式的文件,然后借助 go tool cover 這個(gè)工具來分析。

到此這篇關(guān)于Go工具鏈之代碼測試神器go test詳解的文章就介紹到這了,更多相關(guān)Go工具鏈go test內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go語言基礎(chǔ)教程之(包、變量和函數(shù))

    go語言基礎(chǔ)教程之(包、變量和函數(shù))

    這篇文章主要介紹了go語言基礎(chǔ)教程之(包、變量和函數(shù))的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • go?goquery網(wǎng)頁解析實(shí)現(xiàn)示例

    go?goquery網(wǎng)頁解析實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了go?goquery網(wǎng)頁解析實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • golang解析html網(wǎng)頁的方法

    golang解析html網(wǎng)頁的方法

    今天小編就為大家分享一篇golang解析html網(wǎng)頁的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 聊聊go xorm生成mysql的結(jié)構(gòu)體問題

    聊聊go xorm生成mysql的結(jié)構(gòu)體問題

    這篇文章主要介紹了go xorm生成mysql的結(jié)構(gòu)體問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-03-03
  • Go1.18新特性之泛型使用三步曲(小結(jié))

    Go1.18新特性之泛型使用三步曲(小結(jié))

    本文主要介紹了Go1.18新特性之泛型,是Go1.18的新特性,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 深入解析golang?bufio

    深入解析golang?bufio

    這篇文章主要介紹了golang?bufio解析,golang的bufio庫使用緩存來一次性進(jìn)行大塊數(shù)據(jù)的讀寫,以此降低IO系統(tǒng)調(diào)用,提升性能,需要的朋友可以參考下
    2022-04-04
  • Go語言 如何實(shí)現(xiàn)RSA加密解密

    Go語言 如何實(shí)現(xiàn)RSA加密解密

    這篇文章主要介紹了Go語言實(shí)現(xiàn)RSA加密解密的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • golang抓取tcp包的實(shí)現(xiàn)方式

    golang抓取tcp包的實(shí)現(xiàn)方式

    使用`golang`的`packet`和`pcap`庫可以抓取TCP數(shù)據(jù)包,首先,確保安裝了`pcap`庫,然后使用以下代碼打開網(wǎng)絡(luò)接口,設(shè)置過濾規(guī)則為“tcp”,開始捕獲并解析TCP數(shù)據(jù)包,運(yùn)行代碼時(shí)需要管理員權(quán)限
    2024-12-12
  • 一文帶你掌握Golang基礎(chǔ)之通道

    一文帶你掌握Golang基礎(chǔ)之通道

    在Java中,多線程之間的通信方式有哪些?記得嗎?Java多線程間通信的解決方案有很多種,比如:synchronized。在go中,就一種:通道,文中介紹的非常詳細(xì),感興趣的同學(xué)可以參考下
    2023-05-05
  • win7下配置GO語言環(huán)境 + eclipse配置GO開發(fā)

    win7下配置GO語言環(huán)境 + eclipse配置GO開發(fā)

    這篇文章主要介紹了win7下配置GO語言環(huán)境 + eclipse配置GO開發(fā),需要的朋友可以參考下
    2014-10-10

最新評(píng)論