日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

關于golang?test緩存問題_Golang

作者:熊貓實驗室 ? 更新時間: 2022-11-03 編程語言

在使用vscode進行debug golang 時,出現test結果緩存的情況
導致若干次test結果一致問題
設置go test不用緩存
官方說明
https://pkg.go.dev/cmd/go#hdr-Test_packages
設置:
找到設置

找到test設置

添加"-count=1"

再進行run test就可以了

補充:下面再次介紹下go test 緩存

在執行go test的時候發現, 每次執行時間竟然一致, 然后發現是go test又緩存

Go test 支持兩種模式:

1.Local directory mode, 在調用 go test 時,沒有加參數 (比如 go test 或 go test -v)。在這種模式下,緩存會被禁用。 會編譯當前目錄下的代碼和測試,然后運行測試二進制程序。

2.Package list mode,執行 go test時,指定文件路徑 (比如 go test math, go test ./...)。在這種模式下,會編譯并測試路徑列出的每個測試文件。go test 會緩存成功的測試結果,以避免不必要的重復運行測試。當再次執行測試時,會檢查緩存中對應的測試結果是否 OK, 如果 OK 會重新顯示之前的輸出,而不會運行測試二進制文件。此時 go test 會打印 '(cached)' 標識。
回過頭來再看下項目的測試腳本:

CGO_ENABLED=1 go test -v --mod=vendor ./pkg/...

運行在 Package list mode, 所以單測通過后的二次測試, 會走 cache。

解決方案

有以下三種方式, 在測試中禁用緩存:

1.執行 go test 添加 --count=1 參數(推薦,效率高),以上面????例子:

CGO_ENABLED=1 go test -v --count=1 --mod=vendor ./pkg/...

2.Go 官方提供 clean工具,來刪除對象文件和緩存文件, 不過這種方式相對麻煩:

go clean -testcache // Delete all cached test results

3.設置 GOCACHE 環境變量。GOCACHE 指定了 go 命令執行時緩存的路徑,以便之后被復用。 設置 GOCACHE=off 即可禁用緩存。(go 1.12 之后,不能將其設置為off)

原文鏈接:https://www.cnblogs.com/elve960520/p/16672731.html

欄目分類
最近更新