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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从终端中的谷歌测试套件获得c ++代码超额?相关的知识,希望对你有一定的参考价值。

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

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

  1. linter(eslint)
  2. 单元测试(茉莉花)
  3. 代码覆盖率(伊斯坦布尔覆盖率&伊斯坦布尔检查覆盖率)

我正在努力的是第三步。在NodeJS中,我可以设置可接受的阈值,如果不满足,则作业失败。

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

答案

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

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

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

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

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

以上是关于如何从终端中的谷歌测试套件获得c ++代码超额?的主要内容,如果未能解决你的问题,请参考以下文章

如何从angularJS中的谷歌地图标记获取动态位置

如何从 Rails 测试套件运行单个测试?

如何列出 c/c++ 应用程序中的所有环境变量

C++/OpenGL - 如何获得从类继承的正确变量

如何从最小的C#到最大的C#获得字符串的长度

如何将字符串从文件复制到 C 中的链表?