我正在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
可以解决问题,但这不是我想要的。我希望它能存在于测试文件中。
答案 0 :(得分:0)
包无法从其他包的测试文件中看到导出的符号,因为go
工具不会将这些文件构建到已安装的包中。您拥有的一个选项是使用build constraints。
创建一个或多个文件,其中包含您出于任何原因导出的所有内容,而不使用_test.go
后缀。然后在使用您选择的标签时将它们标记为构建。
// +build export
package normal
var ExportedName = somethingInternal
在根据ExportedName
包中的normal
测试包时,您需要将-tags export
标志添加到测试运行中。
这也有其他各种原因,比如拥有-tags debug
版本,可以添加额外的功能,例如导入net/http/pprof
或expvar