我试图用来go test -cover衡量我正在构建的服务的测试覆盖率。这是一个REST API,我通过旋转,测试HTTP请求和查看HTTP响应来对其进行测试。这些测试不是服务包的一部分,并且go tool cover返回0%的测试覆盖率。有没有办法获得实际的测试覆盖率?我希望在给定的端点上进行最理想的方案测试,至少可以覆盖特定端点处理程序的代码的30-50%,并且可以通过添加更多针对常见错误的测试来进一步改善此情况。
go test -cover
go tool cover
有人向我指出了该-coverpkg指令,它可以满足我的需要-测量特定程序包中的测试覆盖率,即使使用该程序包而不是该程序包一部分的测试也是如此。例如:
-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
相比
$ go test -cover ./src/api/... ok /api 0.191s coverage: 71.0% of statements ok /api/mypackage 0.023s coverage: 0.7% of statements
在上面的例子中,我有测试中main_test.go,其是在package main一个使用package mypackage。我对它的覆盖范围最感兴趣,package mypackage因为它包含了项目中99%的业务逻辑。
main_test.go
package main
package mypackage
我对Go很陌生,因此很可能这不是通过集成测试衡量测试覆盖率的最佳方法。