Go语言:使用软件包范围内的软件包名称(例如)

问题描述:

我目前在我的Go测试脚本中写入ExampleFuncs。例如:Go语言:使用软件包范围内的软件包名称(例如)

package hello 

import "testing" 

func ExampleGetSymbol() { 
    data := GetSymbol("AAPL") 
    fmt.Println(len(data.Data)) 
    // Output: 21 
} 

现在,这给了我两个好处:

  1. 执行这个例子,当我func GetSymbol
下运行 go test
  • 看样子godoc文档中

    有一件事困扰我,我想知道是否有什么我应该做的。 对于正试图从这个例子学习的用户,该行

    data := GetSymbol("AAPL") 
    

    实际上应该是

    data := hello.GetSymbol("AAPL") 
    

    ,但由于测试是在同一范围内的包,我不能这样使用它。

    所以我想我的问题的蒸馏版本将是:
    有没有办法允许package.field表示法的包范围内?

    在此先感谢

  • 而不是把这个包中hello,把它放在包hello_test。您可以将hellohello_test程序包都包含在同一个目录中,并且允许(需要)您按照建议的方式创建示例。

    顺便说一下,这也会导致您只将测试用例(至少对于此文件)写入公共API。这通常是一件好事。但是,如果您需要写入私人功能,则可以将测试拆分为单独的文件,其中一些在hello包中,一些在hello_test中。

    顺便说一句,这个文件稍微埋藏。您可以在go cmd documentation的“Test packages”部分找到它。

    +0

    非常感谢,不知道package_test被允许。没有看到它在测试文档中提到。太棒了。 – DannyB 2014-10-08 23:46:27