2016-12-03 63 views
0

我有一個Go包與多個文件。在Go標準中,我爲包中的每個源文件創建了一個關聯的測試文件。何處將測試的共享代碼放在Go包中?

在我的情況下,不同的測試使用相同的測試幫助功能。我不希望這些函數在包源文件中,因爲它僅用於測試目的。我也想避免在每個測試文件中複製這些代碼。

我應該在哪裏將這些代碼在所有測試源文件之間共享,而不是包的一部分?

+1

如果僅用於測試,則在任何'_test.go'文件中。 – JimB

回答

2

你只是把它放在任何測試文件中,就這些了。使用相同包條款的測試文件屬於相同的測試包,並且可以參考彼此的導出未導出的標識符,而不包含任何import語句。

另請注意,您不需要爲.go文件中的每個文件創建單獨的_test.go文件;並且您可以在文件包中沒有「匹配」xx.go文件的情況下擁有xx_test.go文件。

因爲如果你在寫包a,具有下列文件的例子:

a/ 
    a.go 
    b.go 
    a_test.go 
    b_test.go 

對於黑盒測試你使用package a_test包子句中a_test.gob_test.go。在文件a_test.go中有func util(),您也可以在b_test.go中使用它。

如果你正在寫白盒測試,你會使用的測試文件package a,並再次,你可以參考由b_test.go(反之亦然)的a_test.go聲明的任何標識,沒有任何進口。然而那如果a_test.gob_test.go包條款不匹配(例如a_test.go使用package ab_test.go使用package a_test

注,那麼他們將屬於不同的測試包,那麼你就不能使用彼此宣佈標識符。