登录
首页 >  Golang >  Go问答

Go 测试为何不考虑缓存而将 -count=1 参数应用?

来源:stackoverflow

时间:2024-02-14 08:00:28 281浏览 收藏

大家好,我们又见面了啊~本文《Go 测试为何不考虑缓存而将 -count=1 参数应用?》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我知道为了避免在 go 测试中缓存结果,您可以在 go test 命令中使用 -count=1 标志,但为什么呢?

这来自文档:

显式禁用测试缓存的惯用方法是使用 -count=1

count 标志的解释是:

-count n
    Run each test, benchmark, and fuzz seed n times (default 1).
    If -cpu is set, run n times for each GOMAXPROCS value.
    Examples are always run once. -count does not apply to
    fuzz tests matched by -fuzz.

它没有说明任何有关缓存的信息,默认值为 1,但默认情况下不会忽略跳过缓存的测试。


正确答案


简单的答案是因为 go 工具就是这样编写的。

原因是:测试输出被缓存以加速测试。如果代码不改变,测试输出也不应该改变。当然这不一定是真的,测试可能会从外部源读取信息,或者可能使用时间和随机相关数据,这些数据可能会因运行而异。

当您使用 -count 标志请求多次测试运行时,显然其目的是多次运行测试,没有逻辑只运行一次并显示 n-1 次相同的结果。因此 -count 触发器会忽略缓存的结果。 -count=1 只会导致运行测试一次,忽略以前缓存的输出。

到这里,我们也就讲完了《Go 测试为何不考虑缓存而将 -count=1 参数应用?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>