Go 1.10测试缓存无明显禁用方式,如何临时禁用并强制重建?
如何临时禁用Go 1.10的测试缓存并强制重建测试
我懂你在Go 1.10里碰到测试缓存的麻烦了——这个功能默认开着,官方文档里又没明说怎么直接禁用,但其实有几个实用的小技巧能解决,下面给你掰扯清楚:
临时禁用测试缓存的方法
- 用
-count=1参数:这是最常用的方式,直接告诉Go测试工具别复用缓存结果,每次都重新执行测试。命令示例:go test -count=1 ./... - 修改相关文件:Go的缓存是基于测试文件、被测试源码以及环境等内容的哈希值来判断的,只要随便改动一下测试文件(比如加个空格再删掉)或者被测试的源码,缓存就会自动失效,测试就会重新运行。
- 设置
GOCACHE=off环境变量:直接关闭整个Go的构建和测试缓存,不同系统的设置方式略有不同:- Linux/macOS终端:
GOCACHE=off go test ./... - Windows PowerShell:
$env:GOCACHE="off"; go test ./... - Windows CMD:
set GOCACHE=off && go test ./...
- Linux/macOS终端:
强制重建测试(连带依赖)的方法
- 结合
-a和-count=1参数:-a参数会强制Go重新构建所有依赖包,加上-count=1确保测试不使用缓存,适合需要彻底重建并测试的场景:go test -a -count=1 ./... - 清空测试缓存:使用
go clean -testcache命令可以一次性清空所有测试缓存,之后再运行go test就会从头执行所有测试:go clean -testcache go test ./...
其实这些方法都是基于Go测试缓存的工作逻辑——它依赖输入内容的一致性来决定是否复用缓存,只要打破这个一致性或者直接关闭缓存,就能达到临时禁用或强制重建的目的。
内容的提问来源于stack exchange,提问作者Macilias
相关产品推荐
相关产品推荐

