亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在golang中每次運行測試時獲得不同的UUID?

如何在golang中每次運行測試時獲得不同的UUID?

Go
牛魔王的故事 2022-08-24 12:51:56
我有一個集成測試,每次運行時都需要不同的UUID,但下面的代碼每次都會生成相同的uuid。package serviceimport (    "fmt"    "testing"    "github.com/google/uuid")func TestOne(t *testing.T) {    id, _ := uuid.NewRandom()    fmt.Println(id)}以下是Go Playground中的類似代碼:https://play.golang.org/p/85yecbn4F80如何讓它在每次執行時返回一個新值?
查看完整描述

2 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

從 2022 年 6 月 21 日開始編輯:使用 https://go.dev/play/ 時,腳本似乎不再緩存。每次運行時都會打印一個新的 UUID,即使腳本保持不變也是如此。


正如用戶在評論中指出的那樣,Go Playground中的輸出被緩存。如果在自己的命令行上嘗試此操作,則會在每次運行時打印一個新的 UUID。


package main


import (

    "fmt"


    "github.com/google/uuid"

)


func main() {

    id, _ := uuid.NewRandom()

    fmt.Println(id)

}


$ go run .

604f5ea8-d146-4aac-9a15-4dc33a84eb59

$ go run .

3bc094cf-99c8-4250-98a0-9831fdadedac

$ go run .

b0c13db3-e466-4b5c-a179-e0a16469f11a

就其價值而言,可以通過更改腳本(例如,添加或修改注釋)使Go playground緩存無效。這將導致生成新的 UUID。


查看完整回答
反對 回復 2022-08-24
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

將問題的再現性放在一邊,因為您的問題專門與測試有關,為了完整性,我將添加到現有答案中,該答案也命令緩存結果 - 即使它并不總是如此(見下文)。我不使用VSCode,所以我無法判斷IDE本身是否執行了一些緩存,但請考慮一下,如果您從命令行運行單元測試,并且測試通過,則第二次運行它時,打印的輸出也將是相同的。go testuuid.NewRandom()


特別是,當(引用)“它使用顯式包參數調用”時,緩存成功結果。 并且是包參數。go test./....


因此,如果您有:


func TestUUID(t *testing.T) {

    u, err := uuid.NewRandom()

    fmt.Println(u)

    assert.Nil(t, err)

}

并運行:go test -v ./uuidtest/


=>$ go test -v ./uuidtest/

=== RUN   TestUUID

b1a912ea-0dd2-4ed6-a5af-00ce106b1017

--- PASS: TestUUID (0.00s)

PASS

ok      testproj/uuidtest   0.025s

=>$ go test -v ./uuidtest/

=== RUN   TestUUID

b1a912ea-0dd2-4ed6-a5af-00ce106b1017

--- PASS: TestUUID (0.00s)

PASS

ok      testproj/uuidtest   (cached)

=>$ go test -v ./uuidtest/

=== RUN   TestUUID

b1a912ea-0dd2-4ed6-a5af-00ce106b1017

--- PASS: TestUUID (0.00s)

PASS

ok      testproj/uuidtest   (cached)

順便說一句,終端輸出很好,足以提醒您結果確實是 。(cached)


要避免成功緩存,可以將參數添加到命令調用中:count=1go test -v ./uuidtest/ -count=1


查看完整回答
反對 回復 2022-08-24
  • 2 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號