gotest 是有缓存的
(金庆的专栏 2018.10)
用 gotest 运行一个测试,往 mongodb 中插入一条,发现有时灵,有时不灵。
因为错误地怀疑 mgo 用错了,耗费了不少时间。
最终发现是因为 gotest 是有缓存的,输出的是上次运行的结果,但是并没有实际运行代码。
运行有效是因为代码刚改过,测试时会实际运行。
最终也是无意间发现的。给 mgo 开启了调试日志,然后比较2次运行,发现输出是一样的,
只有一行不同:
ok mail-server/server 0.519s
ok mail-server/server (cached)
明确显示了第2次是缓存。前面运行了几十次都忽略了 cached 这个输出。
为了禁止缓存,可加上 -count=1 参数:
go test -count=1