一、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的报告,如下图:
二、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,执行完毕,查看运行结果,如下图:
Step3:导出报告:右击Project name – > Export --> 搜索CoverageReport --> 点击CoverageReport --> 选择存储路径即可,导出的html文件如下图:
三、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
具体命令行截图如下:
html文件如下图所示:
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