Go单元测试运行从“go get”命令导入的软件包

问题描述:

我导入了一个软件包“gopkg.in/yaml.v2”。 这是根据目录结构Go单元测试运行从“go get”命令导入的软件包

src/ 
    gopkg.in/ 
    yaml.v2 
    main.go 
    abc.go 
    abc_test.go 

当我在编译时间运行命令go test -v ./...从进口包gopkg.in/yaml.v2其运行单元测试为好。在我的情况下不需要。

我是Go和它的测试框架的新手。在谷歌搜索的答案,但无法找到任何具体的东西?

go工具会运行所有软件包的测试,因为您会指示它。

3个点...是go工具的一个功能,它表示给定的包和在其子文件夹中找到的所有包。从Command Go: Description of package lists:

的导入路径中的DOC引用是一个模式,如果它包括一个或多个“...”通配符,其中的每一个可以匹配任何字符串,包括空字符串和含有斜线的字符串。这样的模式扩展到名称与模式匹配的GOPATH树中的所有包目录。

为了使通用模式更方便,有两种特殊情况。首先,模式末尾的/ ...可以匹配一个空字符串,以便net/...匹配其子目录中的net和包,如net/http。其次,任何包含通配符的斜线分隔的pattern元素都不会参与在自营商品包路径中的“vendor”元素的匹配,因此./ ...不匹配./vendor或./子目录中的包。 mycode/vendor,但./vendor/...和./mycode/vendor/...做。但是,请注意,名为供应商的名称本身包含代码的目录不是自定义的软件包:cmd/vendor将是名为vendor的命令,并且模式cmd/...与它匹配。请参阅golang.org/s/go15vendor以获取更多关于销售的信息。

如果你只是想运行你自己的软件包的测试,不要附加...它。导航到您的软件包,然后运行go test .。或者从任何文件夹运行go test your/package

当然要能够做到这一点(并且无论如何推荐),您应该将代码放入包中,而不是直接放入$GOPATH/src文件夹中。例如。把它放到文件夹$GOPATH/src/my/example。然后你可以像go test my/example那样测试它。