go test的坑

眾所周知疲吸,golang自帶了單元測試,寫的程序都會先進行一遍單元測試誉察。最近在寫微信分享的是,簽名參數(shù)中用到了時間戳惹谐,下面的代碼持偏,在命令行執(zhí)行go test -v filename_test.go驼卖,每次打印出來的時間戳將會是一模一樣的。

// TestSha1 ..

func TestSha1(t *testing.T) {
    s := "sha1 test"
    res := util.EncryptWithSha1(s)
    t.Log("res:", res)
    timestamp := time.Now().Unix()
    t.Log(timestamp)
}

這確實有點不科學鸿秆,寫了這么多的單元測試從未出現(xiàn)過如此這樣的問題酌畜。這樣的測試幾乎可能說沒有多大意義,比如你第一次測試成功了卿叽,你改了入?yún)⒒蛘吣阏郎y試一個請求桥胞,你得到的結果仍然是后第一次一模一樣的。這段測試代碼在Vscode執(zhí)行也是一樣的附帽,但是在Goland編譯器中點擊執(zhí)行按鈕并沒有出現(xiàn)這個問題埠戳,也就是說Goland編譯器可能自動處理了井誉。執(zhí)行測試命令出現(xiàn)上面的猜測是緩存造成的蕉扮。因為從測試結果也可以看出:

PASS
ok      command-line-arguments  (cached)

看了看golang官方的文檔,確實緩存造成的颗圣。從Go1.10開始喳钟,測試結果將被緩存,golang緩存測試結果這點在官方文檔也能看到說明在岂。詳情見:https://golang.org/cmd/go/#hdr-Testing_flags奔则。

go test以包列表模式運行時,go test會緩存成功的包的測試結果以避免不必要的重復測試蔽午。當然易茬,有時候我們測試的時候并不喜歡有緩存,我們可以手動禁用緩存及老〕槔常可以通過下列方式禁用緩存:

  • 帶上-count=1參數(shù)禁用緩存。

    如骄恶,執(zhí)行下面命令測試食铐,便會禁用緩存測試結果

go test -v -count=1 filename_test.go
  • 手動清除測試緩存

除了在執(zhí)行測試命令的時候加上禁用緩存參數(shù),我們還可以執(zhí)行下面的命令手動清除緩存僧鲁,需要注 意的是虐呻,每次都得清除,不然下次執(zhí)行的還是上次的結果寞秃。

go clean -testcache
  • 環(huán)境變量設置法

除了上面兩種方式斟叼,還可以通過環(huán)境變量來改變。我們只需要設置GOCACHE=off即可禁用緩存春寿,不過這樣執(zhí)行測試命令的時候會明顯感覺有點慢朗涩,這很正常,肯定沒有直接用緩存的結果快堂淡。但我對比了第一種方式馋缅,發(fā)現(xiàn)加行-count=1 參數(shù)這種方式比設置環(huán)境變量這種效率要高扒腕,速度要快點。

所以萤悴,在用golang測試瘾腰,千萬不要只僅僅用go test就完了,必要時還得加上需要的參數(shù)覆履,有些或許連-v參數(shù)都不會加蹋盆,事實上這樣是不會打印出log日志的。加上-count就更完美了硝全。

go test -v -count=1 filename_test.go

在VsCode中要起效栖雾,也是需要在設置中加上此參數(shù)的。如下:

 "go.testFlags": ["-v","-count=1"]
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伟众,一起剝皮案震驚了整個濱河市析藕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凳厢,老刑警劉巖账胧,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異先紫,居然都是意外死亡治泥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門遮精,熙熙樓的掌柜王于貴愁眉苦臉地迎上來居夹,“玉大人,你說我怎么就攤上這事本冲∽贾” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵眼俊,是天一觀的道長意狠。 經(jīng)常有香客問我,道長疮胖,這世上最難降的妖魔是什么环戈? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮澎灸,結果婚禮上院塞,老公的妹妹穿的比我還像新娘。我一直安慰自己性昭,他們只是感情好拦止,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般汹族。 火紅的嫁衣襯著肌膚如雪萧求。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天顶瞒,我揣著相機與錄音夸政,去河邊找鬼。 笑死榴徐,一個胖子當著我的面吹牛守问,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坑资,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼耗帕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了袱贮?” 一聲冷哼從身側響起仿便,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎字柠,沒想到半個月后探越,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狡赐,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡窑业,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了枕屉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片常柄。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖搀擂,靈堂內(nèi)的尸體忽然破棺而出西潘,到底是詐尸還是另有隱情,我是刑警寧澤哨颂,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布喷市,位于F島的核電站,受9級特大地震影響威恼,放射性物質發(fā)生泄漏品姓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一箫措、第九天 我趴在偏房一處隱蔽的房頂上張望腹备。 院中可真熱鬧,春花似錦斤蔓、人聲如沸植酥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽友驮。三九已至漂羊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卸留,已是汗流浹背拨与。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留艾猜,地道東北人买喧。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像匆赃,于是被迫代替她去往敵國和親淤毛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容