代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用

一、OpenCppCoverage(cpp)

OpenCppCoverage是一个运行在windows上的程序,其不是在编译时进行插桩,而是在运行时,因此保证了代码和测试的一致性。 参考文档:https://github.com/OpenCppCoverage/OpenCppCoverage

1、命令行方式

(1)下载和安装

下载地址:https://github.com/OpenCppCoverage/OpenCppCoverage/releases 安装方法:正常安装,没有什么注意事项(安装时勾选添加环境变量)

(2)执行方法

假设已有程序MatrixUDG,生成的可执行文件名称为:MatrixUDG.exe,存放目录:F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug(exe文件在程序运行之后便会自动生成),则执行步骤为: Step1:打开命令行提示符 Step2:将当前目录切换到F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug Step3:使用下列命令:
OpenCppCoverage.exe --sources F:\code\Cpp\VS\DailyPractice\MatrixUDG\Debug -- MatrixUDG.exe

Step4:自动生成的CoverageReport存放在当前目录。
注:遗留问题:生成的html文件显示不出详细内容,只有title

2、作为VisualStudio插件

(1)插件安装

打开VisualStudio --> 工具 --> 扩展和更新 --> 联机 --> 右上角输入OpenCppCoverage,在下面的结果会出现“OpenCppCoverage Plugin”点击安装即可(安装中需要将VisualStudio重启)

(2)执行

程序写好,编译执行之后,点击“工具 --> Run OpenCppCoverage”,程序运行,将命令行窗口关掉,则代码会出现红色或者绿色的阴影,下面会出现Coverage的报告,如下图:

代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用_第1张图片

二、EclEmma(java)

EclEmma是一款集成在Eclipse上的测试代码覆盖度的插件。

(1)下载和安装

下载地址:https://sourceforge.net/projects/eclemma/ ,解压到[eclipse_home]\dropins\中。 安装(我的版本是Eclipse neon.3):打开eclipse --> help --> install new software --> add --> local --> 选择你下载的eclemma,点OK就可以安装,然后按提示重启。

(2)执行

Step1:代码写好之后,运行java程序 Step2:右击代码 --> Coverage As --> Java Application,执行完毕,查看运行结果,如下图:

代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用_第2张图片
Step3:导出报告:右击Project name – > Export --> 搜索CoverageReport --> 点击CoverageReport --> 选择存储路径即可,导出的html文件如下图:
代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用_第3张图片

三、Coverage(python)

Coverage支持分支覆盖。

安装方法:

下载地址:https://pypi.python.org/pypi/coverage
安装方法:直接安装,安装之后将E:\Anaconda\Scripts(如果没有安装Anaconda,这个目录应该在python的安装目录下)添加到path环境变量中。

1、命令行方式

命令详见: http://coverage.readthedocs.io/en/latest/cmd.html 关键命令如下: 这里以calculator.py为例,这个py文件目录为:F:\code\python\workspace1\testCoverage\

(1)run
将当前目录切换至F:\code\python\workspace1\testCoverage\,输入下列命令:

coverage run calculator.py

执行完之后,会自动生成一个覆盖率统计结果文件,其后缀名为.coverage。
(2)report
有个.coverage文件,可以使用report参数将统计结果在命令行中打印出来,具体命令如下:

coverage report

(3)html
html参数可以生成html测试报告,具体命令如下:

coverage html -d covhtml

具体命令行截图如下:
代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用_第4张图片
html文件如下图所示:
代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用_第5张图片

1、代码API调用方式

使用如下代码:
import coverage

cov = coverage.coverage()
cov.start()

#coding

cov.stop()
cov.report()
cov.html_report(directory='covhtml')

注:遗留问题:使用coverage.py API方法调用不成功,总是提示“Coverage.py warning: No data was collected. (no-data-collected)”错误。

参考文章:
http://www.cnblogs.com/zoro-robin/p/5612472.html
http://coverage.readthedocs.io/en/latest/
http://www.cnblogs.com/coderzh/p/OpenCppCoverage.html
http://www.cnblogs.com/Ming8006/p/5811425.html

你可能感兴趣的:(Programming)