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
(金慶的專欄 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


