集成测试中的golang代码覆盖率?

时间:2015-01-22 04:33:24

标签: go integration-testing

“go tool cover -var = foo”似乎可以生成可以在集成测试工具中部署的检测代码。是否有人为此目的使用此功能?如果是这样,是否有定期转储计数器的传统方法?似乎棘手的部分是在所有感兴趣的文件中以近乎同时的方式执行此操作。即使这样,一些倾斜(如果使用-mode = count)也是不可避免的。

1 个答案:

答案 0 :(得分:0)

我们使用它来收集各种测试的代码覆盖率,以获取各个测试的单个代码覆盖率编号,并查看未发现的代码路径 *模块测试 *集成测试 * UI测试 * API测试 *单元测试

实现这一目标的方法是

  • 构建具有覆盖范围的检测二进制文件(app.debug)。以下命令将生成一个启用覆盖检测的app.debug

    $ go test -c -covermode=atomic -coverpkg="pkg/path/..." -o app.debug
    
  • 在测试中使用此app.debug而不是您的应用程序并对它运行测试。我们的服务器是HTTP服务器,但它适用于大多数应用程序。每次测试都会生成一个单独的cov文件,以后需要将其合并。

    $ ./app.debug -test.coverprofile=functest.cov -- app.params
    
  • 合并所有测试cov文件以获得单个cov文件。为此,您可以使用gocovmerge

    $ find $COVERAGE_DIR -name *.cov | xargs gocovmerge > final.cov
    

最后,您有了一个覆盖率文件,可以为您提供各种覆盖率的代码覆盖率的完整图片。