banner cpptest
首页 > C++test > “如何让C++test统计1个文件的代码覆盖率?” -- 来自QQ群讨论系列文章

“如何让C++test统计1个文件的代码覆盖率?” -- 来自QQ群讨论系列文章

2011年8月12日 浏览: 

本文原载于“软件测试工具”介绍软件测试相关内容的专业博客www.mytestlife.com,任何转载均需保留原址。

前言:本文源自软件测试交流qq群(群号:74287645)的群友AlwaySmile提到的一个问题:如何让C++test统计1个文件的代码覆盖率?QQ群的优点在于交流及时有效,但是每次回答完毕后,信息无法保留,因此博主打算以QQ群中群友的提问为主题完成“xxx问题?-- 来自QQ群讨论系列文章“系列文章,QQ群中的回复或者群友关于软件测试的高见,辑录于此,方便更多需要了解这些问题的人,更好的查找。

问题如何让C++test统计1个文件的代码覆盖率?

回答:C++test获取覆盖率的原理在于通过插装(instrument)插入一些代码,利用这些代码的功能计算整个项目的覆盖率,因此解决该问题的原理就是在插装时,如何对整个项目进行插装。在C++test的测试配置中有一个“插装模式”的配置。首先打开C++test的测试配置窗口,复制一份内建的配置“Run Unit Tests”,点击该配置,选择右边面板中的“执行”,即可发现下面有一个“插装模式”英文"instrumentation mode”,参见如下图:

C++test instrumentation mode

点击右边的“编辑”or "Edit"按钮,在弹出窗口中,去掉coverage一列中后两个"Additional sources”和"Test case sources"勾选项,如下窗口:

C++test instrumentation mode options

这里简单解释下"Additional Sources"的含义,它其实是相对于上面的第一个选项"Tested sources",比如在一个项目中我们鼠标选择某个.cpp文件,则整个项目中的其他.cpp文件相对于该.cpp文件即为"Additional Sources",这也是为什么后面我们需要“鼠标选择希望C++test单独统计的.c/.cpp文件”

此时再回到工程目录,注意此时需要鼠标选择希望C++test单独统计的.c/.cpp文件,使用刚刚配置好的测试配置进行测试,可得到如下结果:

c++test coverage info

注意上述针对.h文件也统计了覆盖率,是因为该ATM.cxx文件中包含了一些头文件,但是我们可以看到整个项目中其他的cxx文件的并没有被计算进来。希望该回复能够回答群友的提问。

更多关于软件测试的文章,欢迎访问“软件测试工具”介绍的专业博客www.mytestlife.com

原文链接:http://www.mytestlife.com/post/c++test_coverage.html

withdreamer C++test Ctest  覆盖率  Ctest使用技巧