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

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

Barbara Streisand
Barbara Streisand原创
2024-10-30 12:32:27236浏览

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中文网其他相关文章!

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