我有一个包含多个文件的Go包。作为Go标准,我正在为包中的每个源文件创建一个相关的测试文件。
在我的例子中,不同的测试使用相同的测试帮助功能。我不希望这些函数出现在包源文件中,因为它只用于测试目的。我还想避免在每个测试文件中复制这段代码。
我应该将这段代码放在所有测试源文件之间,而不是包的一部分之间?
发布于 2016-12-03 15:40:44
你只要把它放进任何一个测试文件就行了。使用相同package子句的测试文件属于同一个测试包,可以在没有任何import语句的情况下引用彼此导出的和未导出的标识符。
还要注意,您不需要为每个_test.go文件创建一个单独的.go文件;您可以在包中没有“匹配”的xx.go文件的情况下拥有一个xx_test.go文件。
例如,如果您正在编写包a,则具有以下文件:
a/
a.go
b.go
a_test.go
b_test.go对于黑匣子测试,您可以在a_test.go和b_test.go中使用a_test.go package子句。在文件func util()中有一个a_test.go,您也可以在b_test.go中使用它。
如果您正在编写白盒测试,那么您将在测试文件中使用package a,同样,您可以引用a_test.go中从b_test.go声明的任何标识符(反之亦然),而无需任何导入。
但是请注意,如果a_test.go和b_test.go中的包子句不匹配(例如,a_test.go使用package a,b_test.go使用package a_test),那么它们将属于不同的测试包,然后不能使用彼此声明的标识符。
https://stackoverflow.com/questions/40949178
复制相似问题