Go unit test正在运行从&#​​34; go get"命令

时间:2017-11-18 03:21:04

标签: unit-testing go

我导入了一个包" gopkg.in/yaml.v2"。 这是在目录结构

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

当我在构建时运行命令go test -v ./...时,它也会从导入的包gopkg.in/yaml.v2运行单元测试。在我的情况下不需要。

我是Go及其测试框架的新手。是否在google中搜索了答案,但找不到任何特定的内容?

1 个答案:

答案 0 :(得分:4)

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

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

的文件
  

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

     

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

如果您只想对自己的套餐进行测试,请不要将...附加到其中。导航到您的包,然后运行go test .。或者从任何文件夹中运行go test your/package

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