从 Go 二进制文件捕获代码覆盖率
问题:
代码覆盖率指标如何针对 Go 二进制文件运行集成测试时会被捕获吗?
答案:
虽然原生 Go 覆盖率工具仅适用于单元测试,但仍然可以收集覆盖率用于集成测试的数据。
解决方案:
要实现此目的:
创建一个执行的测试文件main() 函数:
<code class="go">func TestMainApp(t *testing.T) { go main() // Start integration tests }</code>
从 main() 测试中运行集成测试:
<code class="go">cmd := exec.Command("./mybin", "somefile1") cmd.Run()</code>
收集覆盖率统计数据:
<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>
生成覆盖率报告:
<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>
其他参考:
以上是如何从 Go 二进制文件的集成测试中获取代码覆盖率?的详细内容。更多信息请关注PHP中文网其他相关文章!