zoukankan      html  css  js  c++  java
  • gtest and lcov

    要想保持测试的完整性,需要将gtest与lcov配合使用,方能更好地测试源码的质量。

    一、下载lcov源码

    源码下载链接:https://sourceforge.net/projects/ltp/files/Coverage%20Analysis/LCOV-1.13/

     

    二、解压源码

    进入到解压文件夹,执行命令“make install”安装lcov

     

    三、编译中增加编译参数:-fprofile-arcs -ftest-coverage

    (注意:这里是两个参数,分别是:-fprofile-arcs 和 -ftest-coverage)

    编译后, 会为每个源文件生成.gcno结尾的文件。

    四、编译后运行可执行程序./run_test

    运行后,会为每个源文件,生成gcda结尾的文件。

     

    五、使用lcov收集统计数据做成图形化显示的的数据,可用于分析测试覆盖率

    lcov -c -o test.info -d .

     

    1.  
      -c :捕捉覆盖率数据
    2.  
      -d :表示的是目录,也就是gcno和gcda目录。使用lcov统计覆盖率,必须将gcno和gcda放在同一个目录,并且有源代码,且源代码的目录和编译时的目录一样,否则不能生成。
    3.  
      -o :表示输出文件,以.info结尾,用来存储数据

    六、lcov文件过滤

        某些情况下,需要屏蔽第三方库的覆盖率计算或者只统计某个文件夹下的覆盖率计算,就需要用到lcov的文件过滤功能。 

    • 移除制定目录

           需要用到--remove参数,以删除include目录下所有文件信息为例 :

         lcov --remove all.info '*/include/*' '' -o result.info

          all.info  总的覆盖率信息     result.info 筛选后的覆盖率信息

    • 筛选固定目录

           需要用到--extract参数,以指定samples目录为例:

           lcov --extract all.info '*/samples/*' -o result.info

         all.info  总的覆盖率信息     result.info 筛选后的覆盖率信息

     

    七、获取html文件可视化输出

    genhtml test.info -o output/ 

    output是一个目录,index.html为导航文件,使用 web 浏览器打开 index.html 文件查看代码覆盖结果。可看到各个文件夹下源码文件的测试覆盖率,以下是筛选了排除“*/include/*”目录下文件的测试覆盖率信息:

    点击进去,可看到各个文件被测试的覆盖率情况,点击到文件中,每个文件中哪一行测试到,哪一行没有测试到。

  • 相关阅读:
    Mysql如何进行分组,并且让每一组的结果按照某个字段排序,并且获取每一组的第一个字段
    Mysql报错:Packet for query is too large (1121604 > 1048576).You can change this value on the server by setting the max_allowed_packet variable
    JavaScript判断对象有没有定义
    本地设置VirtualBox虚拟机
    Mysql关于时间排序的问题
    PHP实现页面静态化
    301重定向的两种实现方法
    判断浏览器类型
    javascript DOM事件总结
    装饰器模式
  • 原文地址:https://www.cnblogs.com/pugang/p/14113374.html
Copyright © 2011-2022 走看看