登录
首页 >  Golang >  Go问答

如何在golang的所有包中获取全面的测试覆盖率

来源:stackoverflow

时间:2024-02-17 08:54:23 182浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《如何在golang的所有包中获取全面的测试覆盖率》,聊聊,我们一起来看看吧!

问题内容

我只有 24 小时使用 go,所以我对此非常陌生。

我试图获得完整的测试转换,但是当我运行时

go test -cover new-project/anto/... .

new-project/anto/mon 中,它显示我有 51.8% 的覆盖率,但实际上我有更多的覆盖率,因为在 new-project/anto 中测试了一些测试/integration 其中我有一个测试文件,我导入 new-project/anto/mon 进行测试。

问题是,正如我所读,golang 仅在它们位于同一文件夹中时才进行测试,但拥有单独的文件无法正确检测到它。

我想知道是否有办法获得全面覆盖。

go test -cover new-project/anto/... .
?       new-project/anto/       [no test files]
ok      new-project/anto/conf   6.060s  coverage: 73.1% of statements
ok      new-project/anto/integration    43.309s coverage: [no statements]
?       new-project/anto/integration/conf   [no test files]
?       new-project/anto/integration/mocks  [no test files]
?       new-project/anto/integration/utils  [no test files]
ok      new-project/anto/logs   0.024s  coverage: 70.5% of statements
ok      new-project/anto/metric 0.012s  coverage: 59.0% of statements
ok      new-project/anto/mon    1.612s  coverage: 51.8% of statements
?       new-project/anto/anothercomponents  [no test files]

做了一些研究,我发现了一个 go-acc 插件,可以验证所有软件包,奇怪的是 mon 的比例不再是 51.8%,现在是 29.8%。

go-acc new-project/anto/... .
?       new-project/anto/   [no test files]
ok      new-project/anto//conf  5.030s  coverage: 73.1
ok      new-project/anto//integration   43.117s coverage: 73.5
?       new-project/anto//integration/conf  [no test files]
?       new-project/anto//integration/mocks [no test files]
?       new-project/anto//integration/utils [no test files]
ok      new-project/anto//logs  0.008s  coverage: 22.3
ok      new-project/anto//metric    0.020s  coverage: 59.0
ok      new-project/anto//mon   1.460s  coverage: 29.8
?       new-project/anto//anotherComponents     [no test files]
?       new-project/anto/   [no test files]

正确答案


第一个命令将为所有包生成 coverage.out。第二个解析coverage.out并输出结果:

go test ./...  -coverpkg=./... -coverprofile ./coverage.out
go tool cover -func ./coverage.out

示例输出:

golang.org/x/example/stringutil/reverse.go:21: Reverse      100.0%
total:                                         (statements) 100.0%

有关更多详细信息,请参阅各种 help 输出:

  • go 帮助测试
  • go 帮助测试flags
  • go 帮助包
  • go工具封面--help

本篇关于《如何在golang的所有包中获取全面的测试覆盖率》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>