關(guān)于golang test緩存問題
在使用vscode進行debug golang 時,出現(xiàn)test結(jié)果緩存的情況
導(dǎo)致若干次test結(jié)果一致問題
設(shè)置go test不用緩存
官方說明
https://pkg.go.dev/cmd/go#hdr-Test_packages
設(shè)置:
找到設(shè)置

找到test設(shè)置

添加"-count=1"

再進行run test就可以了
補充:下面再次介紹下go test 緩存
在執(zhí)行g(shù)o test的時候發(fā)現(xiàn), 每次執(zhí)行時間竟然一致, 然后發(fā)現(xiàn)是go test又緩存
Go test 支持兩種模式:
1.Local directory mode, 在調(diào)用 go test 時,沒有加參數(shù) (比如 go test 或 go test -v)。在這種模式下,緩存會被禁用。 會編譯當前目錄下的代碼和測試,然后運行測試二進制程序。
2.Package list mode,執(zhí)行 go test時,指定文件路徑 (比如 go test math, go test ./...)。在這種模式下,會編譯并測試路徑列出的每個測試文件。go test 會緩存成功的測試結(jié)果,以避免不必要的重復(fù)運行測試。當再次執(zhí)行測試時,會檢查緩存中對應(yīng)的測試結(jié)果是否 OK, 如果 OK 會重新顯示之前的輸出,而不會運行測試二進制文件。此時 go test 會打印 '(cached)' 標識。
回過頭來再看下項目的測試腳本:
CGO_ENABLED=1 go test -v --mod=vendor ./pkg/...
運行在 Package list mode, 所以單測通過后的二次測試, 會走 cache。
解決方案
有以下三種方式, 在測試中禁用緩存:
1.執(zhí)行 go test 添加 --count=1 參數(shù)(推薦,效率高),以上面????例子:
CGO_ENABLED=1 go test -v --count=1 --mod=vendor ./pkg/...
2.Go 官方提供 clean工具,來刪除對象文件和緩存文件, 不過這種方式相對麻煩:
go clean -testcache // Delete all cached test results
3.設(shè)置 GOCACHE 環(huán)境變量。GOCACHE 指定了 go 命令執(zhí)行時緩存的路徑,以便之后被復(fù)用。 設(shè)置 GOCACHE=off 即可禁用緩存。(go 1.12 之后,不能將其設(shè)置為off)
到此這篇關(guān)于golang test緩存問題的文章就介紹到這了,更多相關(guān)golang test緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言實戰(zhàn)學(xué)習(xí)之流程控制詳解
這篇文章主要為大家詳細介紹了Go語言中的流程控制,文中的示例代碼講解詳細,對我們學(xué)習(xí)Go語言有一定的幫助?,需要的朋友可以參考下2022-08-08
Go實現(xiàn)自動解壓縮包以及讀取docx/doc文件內(nèi)容詳解
在開發(fā)過程中,我們常常需要處理壓縮包和文檔文件。本文將介紹如何使用Go語言自動解壓縮包和讀取docx/doc文件,需要的可以參考一下2023-03-03
Golang基于內(nèi)存的鍵值存儲緩存庫go-cache
go-cache是一個內(nèi)存中的key:value store/cache庫,適用于單機應(yīng)用程序,本文主要介紹了Golang基于內(nèi)存的鍵值存儲緩存庫go-cache,具有一定的參考價值,感興趣的可以了解一下2025-03-03

