获得 Go 中跨包边界的覆盖率洞察
在处理涉及多个包的 Go 项目时,确保全面的覆盖率信息至关重要准确的代码分析。但是,覆盖率报告排除驻留在不同包中的函数的情况并不罕见。
让我们考虑一个场景,您的项目包含以下结构:
运行时覆盖率分析时,您可能会注意到覆盖率报告显示没有 bar.go 覆盖的行。出现这种差异的原因是 Go 中的默认覆盖机制不包括正在测试的包外部的函数。
解决方案:使用 Coverpkg 扩展覆盖
要克服此限制, Go 通过 -coverpkg 标志提供了一个解决方案。通过在覆盖率分析期间指定此标志,您可以扩展覆盖率计算以包括其他包中的函数。
更新的覆盖率命令应如下所示:
go test -coverpkg=./... -coverprofile=coverage.out ./...
-coverpkg=. /... 标志指示 Go 计算项目中所有包的覆盖率,包括跨包函数调用。随后,覆盖率报告将提供对 foo.go 和 bar.go 覆盖率的深入了解。
这种方法消除了对 db 和 api 包单独测试的需要,简化了测试流程,同时确保全面的覆盖率分析.
以上是如何获得跨多个包的全面 Go 代码覆盖率?的详细内容。更多信息请关注PHP中文网其他相关文章!