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

问题:

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

PASS
ok      tester/apitests    (cached)

链接

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

问题:

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

132605 次浏览

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

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

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

还有GOCACHE=off提到了在这里

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

Code > Preferences > Settings

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

单击Open settings.json

:

  1. 将以下片段添加到您的设置中。json文件

    "go.testEnvVars": {
    "GOCACHE": "off"
    }
    
  2. Change the value of go.testEnvVars to include the following: "GOCACHE": "off"

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

go test -count=1

Go11之前:

GOCACHE=off go test

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

go clean -testcache && go test

VS Code(2022年)

  1. 打开VSCode的settings.json。打开设置。json,按Ctrl +,(或Mac上的Cmd+,),然后单击如下所示的打开json按钮。可选地,如果你不想全局设置它,你可以在项目根目录创建一个.vscode/settings.json文件。

    设置按钮。/></a> . Json文件</p>
</li>
<li>在settings.json中设置<code>go.testFlags</code>值:</p>
<pre><code> {
"go.testFlags": ["-count=1"]
}
</code></pre>
</li>
<li>节约并享受。</p>
</li>
</ol>
<p>注意:这些步骤确保测试缓存将被跳过<em>每一次</em>。如果你想要一次性修复,那么在终端运行<code>go clean -testcache</code>,正如Marc投票最多的答案所说。</p></div>
                                                                            </div>
                                </div>
                            </div>
                        </div>
                                            </div>
                </div>

                <br/>
                <div class=