首页  >  文章  >  后端开发  >  如何获得 Go 中外部测试的准确覆盖率统计数据?

如何获得 Go 中外部测试的准确覆盖率统计数据?

Patricia Arquette
Patricia Arquette原创
2024-10-27 16:02:29178浏览

 How to Get Accurate Coverage Stats for External Tests in Go?

外部测试的覆盖率统计

在 Go 中,建议将测试保留在与正在测试的代码相同的包中。但是,如果您的代码库由大量测试文件组成,您可能更喜欢通过将这些测试分离到不同的包中来实现更清晰的组织。这种方法将测试限制为访问包的公共 API,从而促进更好的组织和封装。

给出以下结构:

api_client:
    Client.go
    ArtistService.go

api_client_tests:
    ArtistService.Events_test.go
    ArtistService.Info_test.go
    UtilityFunction.go

运行 go test bandintown-api/api_client_tests -cover 报告 100%覆盖率,但此覆盖率仅适用于 UtilityFunction.go。

解决方案:

在不合并包的情况下获取测试中 api_client 包的覆盖率统计信息:

go test -cover -coverpkg "api_client" "api_client_tests"

但是值得注意的是,将代码和测试文件分离到不同的目录与 Go 约定相冲突。如果需要黑盒测试,即无法访问包外部的任何内容,请考虑将测试移动到新包而不重新组织文件:

api_client.go:

<code class="go">package api_client

// Only accessible within the package
var privateVar = 10

func Method() {}</code>

api_client_test.go:

<code class="go">package api_client_tests

import "testing"

func TestClient(t *testing.T) {
    Method() // Still accessible from another package
}</code>

以上是如何获得 Go 中外部测试的准确覆盖率统计数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn