douyousu9691 2015-01-22 04:33
浏览 321

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

It seems the point of "go tool cover -var=foo" may be to generate instrumented code that can be deployed in an integration test harness. Is anyone using this feature for that purpose? If so, is there a conventional way to dump the counters periodically? It seems the tricky part would be doing this across all files of interest with near simultaneity. Even then, some skew (if using -mode=count) would be unavoidable.

  • 写回答

1条回答 默认 最新

  • douchun6108 2019-04-11 20:43
    关注

    We use this to collect code coverage from our various tests to get a single code coverage number across the tests and to see the uncovered code paths * Module tests * Integration tests * UI tests * API tests * unit tests

    The way to achieve this is

    • Build an instrumented binary (app.debug) with coverage enables. The below command generates an app.debug with coverage instrumentation enabled

      $ go test -c -covermode=atomic -coverpkg="pkg/path/..." -o app.debug
      
    • Use this app.debug instead of your app in the tests and run tests against it. Ours is an HTTP server but this should work for most applications. Each test generates a seperate cov file which later needs to be merged.

      $ ./app.debug -test.coverprofile=functest.cov -- app.params
      
    • Merge all the test cov files to get a single cov file .For this, you can use gocovmerge

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

    And you have finally a coverage file which gives you complete picture of code coverage from all sorts of coverage.

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)