如何禁用Go中的测试缓存并强制重新运行测试?
大家好!我开始学习Go,并为我的项目编写测试。我注意到一个奇怪的行为:当我使用`go test`连续多次运行测试时,第一次运行后,即使我修改了源代码或测试,它们也会立即执行。在输出中我看到`(cached)`,这让我感到困惑。
示例:我有一个简单的测试:
```go
package main
import "testing"
func TestAddition(t *testing.T) {
result := 2 + 2
if result != 5 { // 故意制造错误
t.Errorf("2 + 2 = %d, want 5", result)
}
}
```
第一次运行——测试按预期失败。将`5`改为`4`,再次运行——但测试仍然显示旧的错误结果!只有执行`go clean -testcache`或显式添加`-count=1`标志后,测试才会重新运行。
为什么Go会缓存测试结果?如何正确禁用此缓存,以便测试始终重新运行?有没有办法全局配置,或者只针对特定测试?