标签 踩坑 下的文章

在开发和调试过程中,确保每次运行测试时都能获取最新的测试结果是非常重要的。然而,Go 测试工具默认会使用缓存来加速测试执行,这可能导致你在修改代码后,测试结果并没有反映最新的变化。本文将介绍如何在 VS Code 中配置 go test 命令,以避免使用缓存。

遇到的问题

在运行 Go 测试时,可能会看到如下输出:

ok      seele/environment/xxx/ability      (cached)

这里的 (cached) 表示 Go 测试工具使用了之前的测试结果,而没有重新运行测试。这在某些情况下可能会导致误导,因为你希望看到的是最新的测试结果,而不是缓存的结果。

解决方法

为了确保每次运行 go test 命令时都不使用缓存,可以使用 -count=1 参数。具体步骤如下:

  1. 打开 VS Code。
  2. 按下 Ctrl + Shift + P(或 Cmd + Shift + P 在 macOS 上)打开命令面板。
  3. 输入并选择 Preferences: Open Settings (JSON) 以打开 settings.json 文件。
  4. settings.json 文件中,添加或修改以下配置:
{
    // 其他配置项...
    "go.testFlags": [
        "-count=1"
    ]
}

这将确保每次运行 go test 命令时都使用 -count=1 参数,从而避免使用缓存。

为什么这么操作管用

在 Go 的测试工具中,-count 标志用于指定每个测试函数应该运行的次数。默认情况下,Go 测试工具会使用缓存来加速测试执行。如果你希望每次运行测试时都重新执行,而不是使用缓存结果,可以使用 -count=1

具体来说:

  • -count=1:每个测试函数运行一次,并且不使用缓存结果。这是避免缓存的常用方法。
  • -count=N:每个测试函数运行 N 次。可以用于测试函数的稳定性或随机性。

例如,运行以下命令:

go test -count=1

这将确保所有测试在每次运行时都重新执行,而不是依赖缓存结果。

总结

在 VS Code 中通过配置 go.testFlags 来使用 -count=1,可以确保你在开发和调试过程中看到的是最新的测试结果,而不是缓存的结果。具体配置如下:

{
    // 其他配置项...
    "go.testFlags": [
        "-count=1"
    ]
}

保存文件后,VS Code 将会使用新的配置运行 go test,避免使用缓存。

通过这种方式,你可以确保每次运行测试时都能获取最新的测试结果,从而提高开发和调试的效率。