阅读本文大概需要 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 中搜索
小提示:因为 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,非常感谢!