在測(cè)試 Go 時(shí),跨包共享設(shè)置和拆卸方法是一個(gè)常見的問(wèn)題。php小編魚仔將為您解答這個(gè)問(wèn)題。在Go語(yǔ)言中,可以使用`flag`包來(lái)設(shè)置和獲取命令行參數(shù)。通過(guò)在測(cè)試文件中使用`flag.Parse()`函數(shù),可以將命令行參數(shù)解析并設(shè)置到對(duì)應(yīng)的變量中。對(duì)于需要共享設(shè)置的測(cè)試場(chǎng)景,可以在測(cè)試文件中設(shè)置全局變量,并在各個(gè)測(cè)試函數(shù)中使用。當(dāng)測(cè)試結(jié)束后,可以在`TestMain`函數(shù)中進(jìn)行拆卸操作,恢復(fù)原來(lái)的設(shè)置狀態(tài)。這樣就可以實(shí)現(xiàn)跨包共享設(shè)置和拆卸的方法。
問(wèn)題內(nèi)容
假設(shè)我有兩個(gè)軟件包 foo
和 bar
。每個(gè)包都有一個(gè)文件和一個(gè)測(cè)試文件:
foo ---widget.go ---widget_test.go bar ---wingding.go ---wingding_test.go
登錄后復(fù)制
現(xiàn)在對(duì)于這兩個(gè)測(cè)試(widget_test.go 和 wingding_test.go),我想分享一些設(shè)置代碼。我知道我可以將此代碼放入 main_test.go 內(nèi)的每個(gè)包中。但我顯然不想在兩個(gè)地方復(fù)制/粘貼代碼。那么我可以把這段代碼放在哪里以便在包之間共享呢?
解決方法
將其放入 foo
和 bar
在測(cè)試中導(dǎo)入的另一個(gè)包 baz
中。我們?cè)跍y(cè)試中將其用于數(shù)據(jù)庫(kù)設(shè)置和拆卸代碼。