gotest 是有緩存的
(金慶的專欄 2018.10)
用 gotest 運(yùn)行一個(gè)測試,往 mongodb 中插入一條,發(fā)現(xiàn)有時(shí)靈,有時(shí)不靈。
因?yàn)殄e(cuò)誤地懷疑 mgo 用錯(cuò)了,耗費(fèi)了不少時(shí)間。
最終發(fā)現(xiàn)是因?yàn)?gotest 是有緩存的,輸出的是上次運(yùn)行的結(jié)果,但是并沒有實(shí)際運(yùn)行代碼。
運(yùn)行有效是因?yàn)榇a剛改過,測試時(shí)會實(shí)際運(yùn)行。
最終也是無意間發(fā)現(xiàn)的。給 mgo 開啟了調(diào)試日志,然后比較2次運(yùn)行,發(fā)現(xiàn)輸出是一樣的,
只有一行不同:
ok mail-server/server 0.519s
ok mail-server/server (cached)
明確顯示了第2次是緩存。前面運(yùn)行了幾十次都忽略了 cached 這個(gè)輸出。
為了禁止緩存,可加上 -count=1 參數(shù):
go test -count=1
(金慶的專欄 2018.10)
用 gotest 運(yùn)行一個(gè)測試,往 mongodb 中插入一條,發(fā)現(xiàn)有時(shí)靈,有時(shí)不靈。
因?yàn)殄e(cuò)誤地懷疑 mgo 用錯(cuò)了,耗費(fèi)了不少時(shí)間。
最終發(fā)現(xiàn)是因?yàn)?gotest 是有緩存的,輸出的是上次運(yùn)行的結(jié)果,但是并沒有實(shí)際運(yùn)行代碼。
運(yùn)行有效是因?yàn)榇a剛改過,測試時(shí)會實(shí)際運(yùn)行。
最終也是無意間發(fā)現(xiàn)的。給 mgo 開啟了調(diào)試日志,然后比較2次運(yùn)行,發(fā)現(xiàn)輸出是一樣的,
只有一行不同:
ok mail-server/server 0.519s
ok mail-server/server (cached)
明確顯示了第2次是緩存。前面運(yùn)行了幾十次都忽略了 cached 這個(gè)輸出。
為了禁止緩存,可加上 -count=1 參數(shù):
go test -count=1