在 Go 项目中的不同文件夹中对代码进行单元测试时,您可能会遇到代码覆盖率报告的差异。这可能会令人沮丧,因为您可能希望在子文件夹中运行测试时覆盖所有代码。
问题:
尽管从stuff_test 文件夹中,覆盖率报告显示覆盖的语句为 0%。涉及以下项目结构:
stuff/stuff.go -> package: stuff test/stuff/stuff_test.go -> package: test
可能原因:
代码覆盖率分析默认仅限于正在测试的包。在这种情况下,stuff_test 包位于与 stuff 包不同的文件夹中,这导致了问题。
解决方案:
要解决此问题,您可以使用运行 go test 时的 -coverpkg 选项。此选项允许您指定要收集覆盖率信息的包。
go test ./test/... -coverprofile=cover.out -coverpkg ./...
此命令将对与指定模式匹配的所有包应用覆盖率分析,在本例中是当前目录及其子目录。
查看覆盖率报告:
测试运行后,您可以使用 go tool cover 命令生成覆盖率报告。
go tool cover -html=cover.out
此命令将创建一个名为 cover.out 的 HTML 报告,您可以在 Web 浏览器中打开该报告以查看所有指定的覆盖率信息包裹。
以上是为什么在跨单独文件夹进行测试时,我的 Go 代码覆盖率报告显示 0%?的详细内容。更多信息请关注PHP中文网其他相关文章!