强制重新测试或禁用测试缓存

时间:2018-02-20 10:10:54

标签: testing go

问题:

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

{{1}}

链接

我已经检查了enter image description here但是没有cli标志用于此目的。

问题:

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

4 个答案:

答案 0 :(得分:67)

testing flags docs中描述了一些选项:

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

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

答案 1 :(得分:13)

GOCACHE=off提到了here

答案 2 :(得分:6)

我解决此问题的方式(我在macOS上使用Visual Studio Code):

代码>首选项>设置

点击设置页面右侧的...

点击Open settings.json

要么:

  1. 将以下代码段添加到settings.json文件中

    "go.testEnvVars": {
        "GOCACHE": "off"
    }
    
  2. go.testEnvVars的值更改为包括以下内容:"GOCACHE": "off"

答案 3 :(得分:1)

在Go11中,我无法使用GOCACHE和模块来禁用缓存,而是使用-count=1

go test -count=1

Go11之前的版本:

GOCACHE=off go test

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

go clean -testcache && go test