2016-12-03 73 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

注,那么他们将属于不同的测试包,那么你就不能使用彼此宣布标识符。