go test 如何禁用缓存?教你3种找答案的方法

阅读本文大概需要 3 分钟。

每次执行单元测试,如果代码没有任何变动(包括可能读取的配置文件),则后续的执行,会直接读取缓存中的测试结果,同时会有一个 cached 标记。

$ go test -run ^TestPrint$ test/hello
ok   test/hello 0.113s

$ go test -run ^TestPrint$ test/hello
ok   test/hello (cached)

有时候可能希望能执行实际的测试,比如看日志输出,想要禁用缓存,怎么办?

碰到这样的问题,你一般会怎么获得答案?

本文介绍几种方法,对你解决其他问题可能也会有帮助。

1、查看 go test 的帮助文档

$ go help testflag

文档内容很多,初步浏览,似乎没有这样的 flag。实际上有这么一段话:

When 'go test' runs in package list mode, 'go test' caches successful
package test results to avoid unnecessary repeated running of tests. To
disable test caching, use any test flag or argument other than the
cacheable flags. The idiomatic way to disable test caching explicitly
is to use -count=1.

也就是说加上 -count=1 即可以禁用缓存。

2、在 go 官方仓库的 issue 中搜索

7804580078ab9115be39aadf09275931.png

search in github issue

小提示:因为 issue 比较多,可以考虑加上 in:title 限定只在标题中搜索

其中 https://github.com/golang/go/issues/24573 里面有人提到,在 Go1.10 及以前通过 GOCACHE=off go test 禁用,Go1.11 及以上版本使用 -count=1 flag 禁用。因为 Go1.11 开始,GOCACHE=off 会影响 go.mod。

同时,在这个 issue 中,还有人提到 VSCode 中如何配置,即加上如下配置:

"go.testFlags": ["-count=1"]

3、百度或谷歌搜索

这是很多人可能会用的方案,当然,还包括在 StackOverflow、golang-nuts 邮件组上搜索。


学到了一个知识点,是不是还学到了如何找问题的答案?!授人以渔很重要。


往期推荐

资料下载

点击下方卡片关注公众号,发送特定关键字获取对应精品资料!

  • 回复「电子书」,获取入门、进阶 Go 语言必看书籍。

  • 回复「视频」,获取价值 5000 大洋的视频资料,内含实战项目(不外传)!

  • 回复「路线」,获取最新版 Go 知识图谱及学习、成长路线图。

  • 回复「面试题」,获取四哥精编的 Go 语言面试题,含解析。

  • 回复「后台」,获取后台开发必看 10 本书籍。

对了,看完文章,记得点击下方的卡片。关注我哦~ 👇👇👇

如果您的朋友也在学习 Go 语言,相信这篇文章对 TA 有帮助,欢迎转发分享给 TA,非常感谢!f0b7dc263ba556abeb94f76464600337.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值