问题:
当我两次运行相同的go测试时,第二次运行根本没有完成。结果是第一次运行时的缓存结果。
PASS
ok tester/apitests (cached)
链接
我已经检查了https://golang.org/cmd/go/#hdr-Testing_flags,但是没有cli标志用于此目的。
题:
是否有可能强制执行测试以始终运行测试而不缓存测试结果。
问题:
当我两次运行相同的go测试时,第二次运行根本没有完成。结果是第一次运行时的缓存结果。
PASS
ok tester/apitests (cached)
链接
我已经检查了https://golang.org/cmd/go/#hdr-Testing_flags,但是没有cli标志用于此目的。
题:
是否有可能强制执行测试以始终运行测试而不缓存测试结果。
Answers:
测试标志docs中描述了一些选项:
go clean -testcache
:使所有测试结果失效-count=1
就是说,代码或测试代码中的更改将使缓存的测试结果无效(使用本地文件或环境变量时也存在扩展逻辑),因此您无需手动使测试缓存无效。
go clean -testcache ./...
也可以工作(在monorepo的顶部)
这里也GOCACHE=off
提到了。
go 1.11
并具有go模块功能GOCACHE=off
会给出错误go: cannot use modules with build cache disabled
。更好的是使用建议-count 1
。
GOCACHE
它将在go 1.12中逐步淘汰,因此go test -count=1 ...
现在使用是更安全的选择。
build cache is disabled by GOCACHE=off, but required as of Go 1.12
我解决此问题的方式(我在macOS上使用Visual Studio Code):
代码>首选项>设置
点击...
设置页面的右侧
请点击 Open settings.json
要么:
将以下代码段添加到settings.json文件中
"go.testEnvVars": {
"GOCACHE": "off"
}
go.testEnvVars
包括以下内容:"GOCACHE": "off"
GOCACHE
不适用于Go的最新版本。VS Code的解决方案是在设置"go.testFlags": ["-count=1"]
中进行设置。