首页 > 后端开发 > Golang > Go中如何实现与测试分离的代码的测试覆盖率?

Go中如何实现与测试分离的代码的测试覆盖率?

Mary-Kate Olsen
发布: 2024-10-29 20:56:29
原创
499 人浏览过

How to Achieve Test Coverage for Code Separated from Tests in Go?

与测试分离的代码的测试覆盖率

尽管单独组织测试文件有利于更干净的代码库并将测试限制为公共 API 交互,它对获得被测目标包(在本例中为 api_client)的覆盖率提出了挑战。

为了解决这个问题,我们可以在运行测试时利用 -coverpkg 标志和包名称:

go test -cover -coverpkg "api_client" "api_client_tests"
登录后复制

此命令将运行为 api_client 包启用覆盖的测试。

虽然允许将测试文件与代码文件分开,但需要注意的是,它偏离了 Go 的标准方法。这意味着包外部的测试无法访问包私有变量或函数,即使它们位于单独的目录中。

要强制进行黑盒测试,其中测试应仅访问公共 API 方法,您仍然可以将测试保存在单独的包中,而无需物理移动文件。例如:

<code class="go">// api_client.go
package api_client

// Private variable not accessible outside package
var privateVar = 10

func PublicMethod() {}</code>
登录后复制
<code class="go">// api_client_test.go
package api_client_tests

import (
    "testing"

    "api_client" // Import api_client package
)

func TestPublicMethod(t *testing.T) {
    api_client.PublicMethod()
}</code>
登录后复制

在此示例中,测试文件无法访问 api_client.go 中的 privateVar 和 Method 函数,确保测试仅通过公共 API 进行交互。

以上是Go中如何实现与测试分离的代码的测试覆盖率?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板