Go 覆盖率排除外部包中的函数
在包含多个包的 Go 项目上运行代码覆盖率时,可能会遇到函数除被测包之外的其他包中的内容不包含在覆盖率报告中。当一个包中的函数调用另一个包中的函数时,可能会发生这种情况。
问题:
如所提供的问题中所述,具有类似包结构的项目以下展示了这个问题:
app/ api/ foo.go test_foo.go src/ db/ bar.go
foo.go 调用 bar.go 中的函数。但是,bar.go 的覆盖率报告显示覆盖了零行。
解决方案:
要解决此问题,您需要在运行覆盖率时包含 coverpkg 标志测试。此标志指定应收集所有包的覆盖范围,无论其位置如何。修改后的运行覆盖率测试的命令是:
go test -coverpkg=./... coverprofile=coverage.out ./...
通过添加 coverpkg 标志,覆盖率报告现在将包含从 foo.go 到 bar.go 的函数调用。
以上是为什么 Go 覆盖范围不包括外部包中的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!