确定 Go 集成测试中的测试覆盖率
集成测试旨在评估整个系统的功能,通常通过模拟或控制外部依赖。然而,确定集成测试的测试覆盖率提出了独特的挑战。
测量非包测试中的覆盖率
在所描述的场景中,测试与包是分开的他们测试。因此, go test -cover 命令报告覆盖率为 0%。为了解决这个问题,可以使用 -coverpkg 指令。
使用 -coverpkg 进行特定的包覆盖范围
-coverpkg 指令可以测量指定的测试覆盖范围包,即使测试是外部的。它以包路径作为参数。
例如,以下命令测量 mypackage 包的覆盖率:
$ go test -cover -coverpkg mypackage ./src/api/...
此方法允许在集成测试中对包覆盖率进行有针对性的分析。
示例覆盖率输出
考虑一个示例,其中 api 包包含 main_test.go 中的测试。大部分业务逻辑驻留在 mypackage 包中。使用 -coverpkg 执行命令可提供更准确的覆盖率表示:
$ go test -cover -coverpkg mypackage ./src/api/... ok /api 0.190s coverage: 50.8% of statements in mypackage ok /api/mypackage 0.022s coverage: 0.7% of statements in mypackage
此输出显示测试覆盖了 mypackage 包中 50.8% 的语句。相反,如果不使用 -coverpkg,覆盖率会显得更高,为 71.0%,这是由于在指定包之外进行了测试。
其他注意事项
这是值得的注意到由于模拟的复杂性和系统范围测试的性质,集成测试通常比单元测试覆盖更少的代码。然而,上面概述的方法提供了一种专门测量相关包的集成测试的实际覆盖率的方法。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3