我有一個Go包與多個文件。在Go標準中,我爲包中的每個源文件創建了一個關聯的測試文件。何處將測試的共享代碼放在Go包中?
在我的情況下,不同的測試使用相同的測試幫助功能。我不希望這些函數在包源文件中,因爲它僅用於測試目的。我也想避免在每個測試文件中複製這些代碼。
我應該在哪裏將這些代碼在所有測試源文件之間共享,而不是包的一部分?
我有一個Go包與多個文件。在Go標準中,我爲包中的每個源文件創建了一個關聯的測試文件。何處將測試的共享代碼放在Go包中?
在我的情況下,不同的測試使用相同的測試幫助功能。我不希望這些函數在包源文件中,因爲它僅用於測試目的。我也想避免在每個測試文件中複製這些代碼。
我應該在哪裏將這些代碼在所有測試源文件之間共享,而不是包的一部分?
你只是把它放在任何測試文件中,就這些了。使用相同包條款的測試文件屬於相同的測試包,並且可以參考彼此的導出和未導出的標識符,而不包含任何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.go
和b_test.go
。在文件a_test.go
中有func util()
,您也可以在b_test.go
中使用它。
如果你正在寫白盒測試,你會使用的測試文件package a
,並再次,你可以參考由b_test.go
(反之亦然)的a_test.go
聲明的任何標識,沒有任何進口。然而那如果a_test.go
和b_test.go
包條款不匹配(例如a_test.go
使用package a
和b_test.go
使用package a_test
)
注,那麼他們將屬於不同的測試包,那麼你就不能使用彼此宣佈標識符。
如果僅用於測試,則在任何'_test.go'文件中。 – JimB