【问题标题】:How to `go test` all tests in my project?如何“去测试”我项目中的所有测试?
【发布时间】:2013-04-27 12:13:09
【问题描述】:

go test 命令只覆盖一个目录中的*_test.go 文件。

我想go test 整个项目,这意味着测试应该覆盖目录./ 中的所有*_test.go 文件以及目录./ 下的每个子树目录。

执行此操作的命令是什么?

【问题讨论】:

    标签: testing go


    【解决方案1】:

    这应该运行当前目录及其所有子目录中的所有测试:

    $ go test ./...
    

    这应该运行给定特定目录的所有测试:

    $ go test ./tests/... ./unit-tests/... ./my-packages/...
    

    这应该运行所有带有前缀为foo/的导入路径的测试:

    $ go test foo/...
    

    这应该运行所有以foo为前缀的导入路径:

    $ go test foo...
    

    这应该会在你的 $GOPATH 中运行所有测试:

    $ go test ...
    

    【讨论】:

    • zsh 中的仅供参考,上一个示例中的 ... 必须转义,即 go test \...
    • 当我尝试在 subdir 中运行所有测试时,我得到go: warning: "subdir/..." matched no packages
    • @zzzz 如何为特定文件夹运行测试?说“去测试 foo...bar...?
    • go test ./... 真的是一个很棒的命令!感谢您的帮助:)
    • 如果您还想查看成功测试的输出,请不要忘记-v 参数。
    【解决方案2】:

    From Go 1.9 onwards,使用

    go test ./...
    

    在 Go 1.6 到 1.8 中,./... 也匹配 vendor directory。要跳过供应商的软件包,您可以使用

    go test $(go list ./... | grep -v /vendor/)
    

    来源:https://github.com/golang/go/issues/11659https://github.com/golang/go/issues/14417https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/2366、@nickgrim 的评论。

    【讨论】:

    • 这个解决方案看起来很简单,但它使 Windows 上的人(我不是,但我的一些队友)运行它变得更加复杂。 Go 在每个平台上运行本机而不需要 Makefile 的美妙之处在于。
    • 值得指出的是 as of Go 1.9 ./... 不再与 ./vendor/ 目录匹配,因此您可以运行所有测试,而不是使用 go test ./... 运行任何供应商测试
    【解决方案3】:

    文件夹结构

    ProjectName/folderName1/file_test.go
    ProjectName/folderName2/file1_test.go
    ProjectName/folderName3/file2_test.go
    

    去测试命令命令

       ProjectName$ go test -v ./...
        ProjectName$ go test  ./...
        ProjectName$ go test -cover ./...
    

    整个项目的覆盖率报告

    ok      ProjectName/folderName1 10%
    ok      ProjectName/folerName2  90%
    ok      ProjectName/folerName2  85%
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 2014-12-11
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      相关资源
      最近更新 更多