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

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

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

go test 作用

go test 是 Go 工具鏈中的一個命令,用于編譯和運行按照要求編寫的 Golang 測試代碼,并生成測試報告。

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

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

go test 使用方法和使用示例

go test 的使用方法比較簡單,在項目的根目錄或者某個包下直接運行如下命令:

go test 

go test 將會編譯和運行當前項目或者當前包下所有的測試代碼,并輸出測試結(jié)果。

可以通過指定包或測試文件的路徑來運行特定的測試,可以指定多個,也可以使用通配符進行匹配。例如:

go test [packages]
go test xxx.go

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

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

這里要著重講解一下 -coverprofile 參數(shù),這個參數(shù)可以將測試用例的代碼覆蓋結(jié)果輸出到指定文件中,然后可以借助 go tool cover 來做具體的分析。來看一下帶上 -coverprofile 參數(shù)的效果,以 github.com/luduoxin/json-validator-go 項目為例,clone 代碼后,切換到項目的 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

第二行每個部分代表的意思如下:

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    深入解析golang?bufio

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

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

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

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

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

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

    在Java中,多線程之間的通信方式有哪些?記得嗎?Java多線程間通信的解決方案有很多種,比如:synchronized。在go中,就一種:通道,文中介紹的非常詳細,感興趣的同學可以參考下
    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

最新評論