我有一个包含多个文件的Go包。从Go标准开始,我正在为包中的每个源文件创建一个关联的测试文件。
在我的情况下,不同的测试使用相同的测试帮助功能。我不希望这些函数包含在包源文件中,因为它仅用于测试目的。我还想避免在每个测试文件中复制此代码。
我应该在所有测试源文件之间共享此代码,而不是包的一部分?
答案 0 :(得分:2)
您只需将其放入任何测试文件即可。使用相同包子句的测试文件属于同一个测试包,可以在没有任何import
语句的情况下引用彼此导出的和未导出的标识符。
另请注意,您无需为每个_test.go
文件创建单独的.go
文件;并且你可以拥有一个xx_test.go
文件而不需要匹配"包中的xx.go
文件。
例如,如果您正在编写包a
,请使用以下文件:
a/
a.go
b.go
a_test.go
b_test.go
对于黑盒测试,您可以使用package a_test
和a_test.go
中的b_test.go
包条款。文件func util()
中有a_test.go
,您也可以在b_test.go
中使用它。
如果你正在编写白盒测试,那么你在测试文件中使用package a
,再次,你可以从{{1}引用a_test.go
中声明的任何标识符没有任何导入的(反之亦然)。
请注意,如果b_test.go
和a_test.go
中的包条款不匹配(例如b_test.go
使用a_test.go
而package a
使用b_test.go
),那么它们将属于不同的测试包,然后你就不能使用彼此声明的标识符。