首页 > 后端开发 > Golang > 如何从 Go 二进制文件的集成测试中获取代码覆盖率?

如何从 Go 二进制文件的集成测试中获取代码覆盖率?

Barbara Streisand
发布: 2024-10-30 12:32:27
原创
262 人浏览过

How to Get Code Coverage from Integration Tests for Go Binaries?

从 Go 二进制文件捕获代码覆盖率

问题:

代码覆盖率指标如何针对 Go 二进制文件运行集成测试时会被捕获吗?

答案:

虽然原生 Go 覆盖率工具仅适用于单元测试,但仍然可以收集覆盖率用于集成测试的数据。

解决方案:

要实现此目的:

  1. 创建一个执行的测试文件main() 函数:

    <code class="go">func TestMainApp(t *testing.T) {
        go main()
        // Start integration tests
    }</code>
    登录后复制
  2. 从 main() 测试中运行集成测试:

    <code class="go">cmd := exec.Command("./mybin", "somefile1")
    cmd.Run()</code>
    登录后复制
  3. 收集覆盖率统计数据:

    <code class="go">coverProfile := "coverage.out"
    test.RunMain()
    if err := testing.StartCoverage(coverProfile); err != nil {
        log.Fatalf("Coverage: %v", err)
    }
    defer testing.StopCoverage(coverProfile)</code>
    登录后复制
  4. 生成覆盖率报告:

    <code class="go">if err := testing.RunTests(); err != nil {
        log.Fatalf("Coverage: %v", err)
    }
    cmd := exec.Command("go", "tool", "cover", "-html=coverage.out")
    cmd.Run()</code>
    登录后复制

其他参考:

  • [通过外部测试进行覆盖](https://blog.golang.org/cover-external-tests)

以上是如何从 Go 二进制文件的集成测试中获取代码覆盖率?的详细内容。更多信息请关注PHP中文网其他相关文章!

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