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

Sim*_*rey 54 testing go

问题:

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

PASS    
ok      tester/apitests    (cached)
Run Code Online (Sandbox Code Playgroud)

链接

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

题:

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

Mar*_*arc 96

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

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

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

  • 如果您正在测试移动依赖项,例如您设置/拆除依赖项而不是代码的数据库,它仍然很有用.看起来OP正在针对非存根API进行测试,这就是提示他们的问题. (2认同)
  • 注意`go clean -testcache。/ ...`也可以工作(在monorepo的顶部) (2认同)

sol*_*ysh 16

这里也GOCACHE=off提到.

  • 对于`go 1.11`并且在使用`GOCACHE = off`时使用模块功能会出现错误`go:不能使用禁用构建缓存的模块`.更好的是使用建议的`-count 1`. (4认同)
  • `构建缓存被 GOCACHE=off 禁用,但从 Go 1.12 开始是必需的` (2认同)

Jul*_*oro 14

对于 VS Code(2022 年)

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

    settings.json 文件的按钮

  2. 在settings.json中设置go.testFlags值:

     {    
         "go.testFlags": ["-count=1"]
     }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存并享受。

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


Muh*_*man 7

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

go test -count=1
Run Code Online (Sandbox Code Playgroud)

在Go11之前:

GOCACHE=off go test
Run Code Online (Sandbox Code Playgroud)

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

go clean -testcache && go test 
Run Code Online (Sandbox Code Playgroud)


dis*_*nal 5

我修复它的方式(我在macOS上使用Visual Studio Code):

代码>首选项>设置

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

点击 Open settings.json

或者:

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

    "go.testEnvVars": {
        "GOCACHE": "off"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 更改值go.testEnvVars包括以下内容:"GOCACHE": "off"

  • 从 Go 1.12 开始需要构建缓存,因此设置 `GOCACHE` 将不适用于最新版本的 Go。VS Code 的解决方案是在设置中设置`"go.testFlags": ["-count=1"]`。 (5认同)