问题:

当我运行相同的go测试两次时,第二次运行根本没有完成。结果是第一次运行时缓存的结果。

PASS    
ok      tester/apitests    (cached)

链接

我已经检查了https://golang.org/cmd/go/#hdr-Testing_flags,但没有cli标志用于此目的。

问题:

是否有可能强制go test始终运行测试,而不缓存测试结果。


当前回答

我修复这个问题的方式(我在macOS上使用Visual Studio Code):

Code > Preferences > Settings

点击…在“设置”页面的右侧

单击Open settings.json

:

将以下代码片段添加到设置中。json文件 “去。testEnvVars ": { “GOCACHE”:“关闭” } 改变go的值。testenvars包含以下内容:"GOCACHE": "off"

其他回答

VS Code(2022年)

打开VSCode的settings.json。打开设置。json,按Ctrl +,(或Cmd+,在Mac上),然后单击打开json按钮如下所示。如果你不想全局设置,你可以创建一个.vscode/settings。Json文件在项目根。 开始行动。json中的testFlags值: { “去。testFlags”(“数= 1”): } 节约并享受。

注意:这些步骤确保每次都会跳过测试缓存。如果你想要一次性的修复,那么在终端运行go clean -testcache,正如Marc投票最多的答案所说。

这里还有GOCACHE=off。

我修复这个问题的方式(我在macOS上使用Visual Studio Code):

Code > Preferences > Settings

点击…在“设置”页面的右侧

单击Open settings.json

:

将以下代码片段添加到设置中。json文件 “去。testEnvVars ": { “GOCACHE”:“关闭” } 改变go的值。testenvars包含以下内容:"GOCACHE": "off"

测试标志文档中描述了一些选项:

Go clean -testcache:使所有测试结果失效 在测试运行中使用不可缓存的标志。惯用的方法是使用-count=1

也就是说,代码或测试代码中的更改将使缓存的测试结果无效(在使用本地文件或环境变量时也存在扩展逻辑),因此您不应该手动使测试缓存无效。

在Go11中,我不能在模块中使用GOCACHE禁用缓存,我使用-count=1代替:

go test -count=1

Go11之前:

GOCACHE=off go test

或者,清理测试缓存并再次运行测试:

go clean -testcache && go test