關(guān)于golang test緩存問題
在使用vscode進(jìn)行debug golang 時(shí),出現(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"
再進(jìn)行run test就可以了
補(bǔ)充:下面再次介紹下go test 緩存
在執(zhí)行g(shù)o test的時(shí)候發(fā)現(xiàn), 每次執(zhí)行時(shí)間竟然一致, 然后發(fā)現(xiàn)是go test又緩存
Go test 支持兩種模式:
1.Local directory mode, 在調(diào)用 go test 時(shí),沒有加參數(shù) (比如 go test 或 go test -v)。在這種模式下,緩存會(huì)被禁用。 會(huì)編譯當(dāng)前目錄下的代碼和測(cè)試,然后運(yùn)行測(cè)試二進(jìn)制程序。
2.Package list mode,執(zhí)行 go test時(shí),指定文件路徑 (比如 go test math, go test ./...)。在這種模式下,會(huì)編譯并測(cè)試路徑列出的每個(gè)測(cè)試文件。go test 會(huì)緩存成功的測(cè)試結(jié)果,以避免不必要的重復(fù)運(yùn)行測(cè)試。當(dāng)再次執(zhí)行測(cè)試時(shí),會(huì)檢查緩存中對(duì)應(yīng)的測(cè)試結(jié)果是否 OK, 如果 OK 會(huì)重新顯示之前的輸出,而不會(huì)運(yùn)行測(cè)試二進(jìn)制文件。此時(shí) go test 會(huì)打印 '(cached)' 標(biāo)識(shí)。
回過頭來再看下項(xiàng)目的測(cè)試腳本:
CGO_ENABLED=1 go test -v --mod=vendor ./pkg/...
運(yùn)行在 Package list mode, 所以單測(cè)通過后的二次測(cè)試, 會(huì)走 cache。
解決方案
有以下三種方式, 在測(cè)試中禁用緩存:
1.執(zhí)行 go test 添加 --count=1 參數(shù)(推薦,效率高),以上面????例子:
CGO_ENABLED=1 go test -v --count=1 --mod=vendor ./pkg/...
2.Go 官方提供 clean工具,來刪除對(duì)象文件和緩存文件, 不過這種方式相對(duì)麻煩:
go clean -testcache // Delete all cached test results
3.設(shè)置 GOCACHE 環(huán)境變量。GOCACHE 指定了 go 命令執(zhí)行時(shí)緩存的路徑,以便之后被復(fù)用。 設(shè)置 GOCACHE=off 即可禁用緩存。(go 1.12 之后,不能將其設(shè)置為off)
到此這篇關(guān)于golang test緩存問題的文章就介紹到這了,更多相關(guān)golang test緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CMD下執(zhí)行Go出現(xiàn)中文亂碼的解決方法
需要在Go寫的服務(wù)里面調(diào)用命令行或者批處理,并根據(jù)返回的結(jié)果做處理。但是windows下面用cmd返回中文會(huì)出現(xiàn)亂碼,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下2021-12-12Golang在Mac、Linux、Windows下如何交叉編譯的實(shí)現(xiàn)
這篇文章主要介紹了Golang在Mac、Linux、Windows下如何交叉編譯的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03go?tool?pprof?參數(shù)?'-base'?和?'-diff_base&
這篇文章主要介紹了go?tool?pprof?參數(shù)?'-base'?和?'-diff_base'之間的區(qū)別,兩個(gè)參數(shù)都是用于計(jì)算當(dāng)前?profile文件減去基準(zhǔn)profile文件所獲得的差值,用這個(gè)差值生成一個(gè)新的profile文件,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05vscode配置go開發(fā)環(huán)境的實(shí)戰(zhàn)過程
vscode配置go的開發(fā)環(huán)境很簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于vscode配置go開發(fā)環(huán)境的實(shí)戰(zhàn)過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06