我有一个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