Go语言:使用软件包范围内的软件包名称(例如)
问题描述:
我目前在我的Go测试脚本中写入ExampleFuncs
。例如:Go语言:使用软件包范围内的软件包名称(例如)
package hello
import "testing"
func ExampleGetSymbol() {
data := GetSymbol("AAPL")
fmt.Println(len(data.Data))
// Output: 21
}
现在,这给了我两个好处:
- 执行这个例子,当我
func GetSymbol
go test
和
有一件事困扰我,我想知道是否有什么我应该做的。 对于正试图从这个例子学习的用户,该行
data := GetSymbol("AAPL")
实际上应该是
data := hello.GetSymbol("AAPL")
,但由于测试是在同一范围内的包,我不能这样使用它。
所以我想我的问题的蒸馏版本将是:
有没有办法允许package.field
表示法的包范围内?
在此先感谢
答
而不是把这个包中hello
,把它放在包hello_test
。您可以将hello
和hello_test
程序包都包含在同一个目录中,并且允许(需要)您按照建议的方式创建示例。
顺便说一下,这也会导致您只将测试用例(至少对于此文件)写入公共API。这通常是一件好事。但是,如果您需要写入私人功能,则可以将测试拆分为单独的文件,其中一些在hello
包中,一些在hello_test
中。
顺便说一句,这个文件稍微埋藏。您可以在go cmd documentation的“Test packages”部分找到它。
非常感谢,不知道package_test被允许。没有看到它在测试文档中提到。太棒了。 – DannyB 2014-10-08 23:46:27