如何从测试包中导出数据并在go中的另一个测试包中使用它们

时间:2014-12-23 01:00:01

标签: go

我正在B_test.go创建一些变量,我想在A_test.go中使用相同的变量。可以在Go中完成吗?我认为问题归结为我是否可以仅在B_test.go期间从go test导出函数。

示例:

在包A_test.go

package A

var from_B = B.ExportedVars()

在包B_test.go

package B

ExportedVars() []int {
    return []int{0, 1)
}

正在运行go test

undefined B.ExportedVars

ExportedVars()置于B.go而不是B_test.go可以解决问题,但这不是我想要的。我希望它能存在于测试文件中。

1 个答案:

答案 0 :(得分:0)

包无法从其他包的测试文件中看到导出的符号,因为go工具不会将这些文件构建到已安装的包中。您拥有的一个选项是使用build constraints

创建一个或多个文件,其中包含您出于任何原因导出的所有内容,而不使用_test.go后缀。然后在使用您选择的标签时将它们标记为构建。

// +build export
package normal

var ExportedName = somethingInternal

在根据ExportedName包中的normal测试包时,您需要将-tags export标志添加到测试运行中。

这也有其他各种原因,比如拥有-tags debug版本,可以添加额外的功能,例如导入net/http/pprofexpvar