網(wǎng)站首頁(yè) 編程語言 正文
在使用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)
原文鏈接:https://www.cnblogs.com/elve960520/p/16672731.html
相關(guān)推薦
- 2022-09-17 Pandas數(shù)據(jù)類型轉(zhuǎn)換df.astype()及數(shù)據(jù)類型查看df.dtypes的使用_python
- 2022-06-30 python數(shù)據(jù)操作之lambda表達(dá)式詳情_python
- 2023-01-17 Android?Handler消息傳遞機(jī)制_Android
- 2022-01-27 @ConfigurationProperties放在類上跟放在方法上有什么區(qū)別
- 2022-05-02 C/C++的各種字符串函數(shù)你知道幾個(gè)_C 語言
- 2022-12-01 使用SDLocalize實(shí)現(xiàn)高效完成iOS多語言工作_IOS
- 2022-09-15 如何使用注解方式實(shí)現(xiàn)?Redis?分布式鎖_Redis
- 2022-01-17 自動(dòng)化實(shí)戰(zhàn)之Cypress(一):環(huán)境搭建
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支