如何从终端中的谷歌测试套件获得c ++代码超额?

时间:2017-12-20 09:25:38

标签: c++ unit-testing continuous-integration code-coverage

我已经开始使用我正在构建CI管道的 Google Test 单元测试工具。是否有一个代码覆盖率工具在shell中运行,并允许我设置阈值并将其作为作业添加到管道中?

作为参考,我来自NodeJS背景并使用如下管道:

  1. linter(eslint)
  2. 单元测试(茉莉花)
  3. 代码覆盖率(istanbul coverage&& istanbul check-coverage)
  4. 我挣扎的是第三步。在NodeJS中,我可以设置可接受的阈值,如果不满足,则作业失败。

    我希望为我的C ++代码复制这个。这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

代码覆盖率与您使用的测试框架无关。

在Linux上使用C ++,您必须使用特殊标志编译软件以启用代码覆盖,例如:使用g ++,您必须设置参数--coverage(并且还建议禁用所有优化)。

当您运行测试程序时,您将获得大量带有覆盖数据的文件。然后可以通过例如这些收集和评估这些。 lcov
lcov可以使用结果创建HTML页面,但也会将覆盖率分析的总计打印到stdout。因此,您必须构建一个运行lcov的脚本,过滤输出并报告错误或失败,具体取决于测量的百分比。

顺便说一句,您可以设置lcov的限制来定义覆盖范围是否足够,但这仅用于HTML输出中的背景颜色。

在每个主题上,您都可以在Stackoverflow找到多个条目,以及如何完成这些任务。

相关问题