一尘不染

如何衡量Golang集成测试覆盖率?

go

我试图用来go test -cover衡量我正在构建的服务的测试覆盖率。这是一个REST
API,我通过旋转,测试HTTP请求和查看HTTP响应来对其进行测试。这些测试不是服务包的一部分,并且go tool cover返回0%的测试覆盖率。有没有办法获得实际的测试覆盖率?我希望在给定的端点上进行最理想的方案测试,至少可以覆盖特定端点处理程序的代码的30-50%,并且可以通过添加更多针对常见错误的测试来进一步改善此情况。


阅读 327

收藏
2020-07-02

共1个答案

一尘不染

有人向我指出了该-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%的业务逻辑。

我对Go很陌生,因此很可能这不是通过集成测试衡量测试覆盖率的最佳方法。

2020-07-02