下一页亚洲11p_国产精品亚洲第一页在线观看_麻豆影院在线观看免费视频_亚洲色播在线观看_激情亚洲欧美另类小说图片

您現(xiàn)在的位置 :

首頁  >  企業(yè)新聞 >  > 正文

VScode 中g(shù)olang 單元測試,解決單元測試超時timeout30s

時間 :2023-08-01 18:29:41   來源 : 博客園

目的:單元測試的主要目的是驗證代碼的每個單元(函數(shù)、方法)是否按照預(yù)期工作。

提示:解決單元測試超時30s的問題在序號4


(資料圖片僅供參考)

1 準備以_test.go結(jié)尾文件和導(dǎo)入testing包

在命名文件時需要讓文件必須以_test結(jié)尾,在文件中導(dǎo)入testing包。單元測試源碼文件可以由多個測試用例組成,每個測試用例函數(shù)需要以Test為前綴

func TestXXX(t *testing.T)

(1)測試用例文件不會參與正常的源碼編譯,不會被包含到可執(zhí)行文件中;

(2)測試用例文件使用go test指令來執(zhí)行,沒有也不需要main()作為函數(shù)入口。所有在以_test結(jié)尾的源碼內(nèi)以Test開頭的函數(shù)會自動被執(zhí)行;

(3)測試用例可以不傳入*testing.T參數(shù)。

測試代碼如下:

注意:程序需要有g(shù)o.mod文件,終端輸入命令go mod init module即可生成

1  package main 2  import (      3     "testing" 4     "fmt" 5     "time" 6 )   7 func Test_Log(t *testing.T) { 8     t.Log("hello world") 9     t.Log("hello world jkjk")10     fmt.Println("==============Test_Log===============") 11 }12 func Test_World(t *testing.T) {13     t.Log("start")  time.Sleep(1 * time.Second)14     t.Log("1s")15     start := time.Now()16     time.Sleep(10000 * time.Microsecond)17     elapsed := time.Since(start)18     fmt.Println(elapsed)19     fmt.Println("==============Test_World===============")20 }
2 終端輸入命令進行g(shù)olang單元測試

(1)go test -v 執(zhí)行項目中所有的單元測試文件

在終端輸入命令:go test -v,執(zhí)行單元測試并打印詳情,PASS表示測試用例運行成功,F(xiàn)AIL表示測試用例運行失??;OK表示執(zhí)行完成,并且可以看到執(zhí)行的時長。

(2)go test -vxxx_test.go執(zhí)行指定單元測試文件

當項目中有多個要執(zhí)行的測試文件時,可以執(zhí)行指定單元測試文件,如在終端輸入命令:go test -v time_test.go

(1)go test -run xxx -v執(zhí)行指定單元測試函數(shù)

當測試文件有多個測試函數(shù)執(zhí)行,可以執(zhí)行指定單元測試函數(shù),如在終端輸入命令:

go test -run Test_World -v

3 VScode測試進行g(shù)olang單元測試

點擊VScode視圖左側(cè)的測試按鈕,點擊module展開,可以看到項目的管理文件,點擊對應(yīng)文件的運行測試按鈕執(zhí)行單元測試,如點擊module的運行測試按鈕則執(zhí)行所有文件的單元測試,也可以點擊打開文件中測試函數(shù)的運行測試按鈕執(zhí)行單元測試。

單元測試執(zhí)行完成后會出現(xiàn)綠色打鉤的執(zhí)行完成圖標。點擊視圖和更多操作按鈕(...),點擊清除所有結(jié)果則執(zhí)行完成圖標消失。

在進行單元測試的過程中,可以點擊取消測試運行按鈕取消測試。

4 解決golang單元測試超時30s

測試代碼如下:

1  package main 2  import (      3     "testing" 4     "fmt" 5     "time" 6 )   7 func Test_Log(t *testing.T) { 8     t.Log("hello world") 9     t.Log("hello world jkjk")10     fmt.Println("==============Test_Log===============") 11 }12 func Test_World(t *testing.T) {13     t.Log("start")  time.Sleep(25 * time.Second)14     t.Log("25s")15     start := time.Now()16     time.Sleep(10000 * time.Microsecond)17     elapsed := time.Since(start)18     fmt.Println(elapsed)19     fmt.Println("==============Test_World===============")20 }

如果是在終端輸入命令:go test -v進行單元測試,執(zhí)行單元測試的程序總時長超過30s時也能夠正常運行。

如果是在VScode的測試中點擊運行測試按鈕進行單元測試時,執(zhí)行30s之前的測試函數(shù),超過30s的測試函數(shù)則會跳過。

更改go test的超時時長:

(1)點擊VScode左下方的管理圖標按鈕

(2)點擊設(shè)置

(3)在搜索區(qū)域輸入:go test timeout

(4)在Go:test timeout 輸入框輸入超時時長,如:1h

再次點擊運行測試按鈕執(zhí)行單元測試,測試文件都能順利執(zhí)行,并且可以看到設(shè)置的超時時長1h

標簽:

推薦文章

X 關(guān)閉

X 關(guān)閉