jacoco + eclipse单元测试覆盖率

Posted 90后菜鸟-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jacoco + eclipse单元测试覆盖率相关的知识,希望对你有一定的参考价值。

概念

Jacoco:JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等。 
插桩:程序插桩,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。 
On-the-fly插桩:JVM中通过-javaagent参数指定特定的jar文件启动Instrumentation的代理程序,代理程序在通过Class Loader装载一个class前判断是否转换修改class文件,将统计代码插入class,测试覆盖率分析可以在JVM执行测试代码的过程中完成。 
Offline模式:在测试前先对文件进行插桩,然后生成插过桩的class或jar包,测试插过桩 的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理,并生成报告。

注入方法

比较有特色的几个方法: 
Instrumentation 注入 
Byte Code 字节码注入(在Byte Code时使用的ASM技术修改字节码方法,可以修改Jar文件、class文件字节码文件,通过一个Probe探针的方式来注入,程序执行后可以被记录,它不会改变原有代码的行为) 
On-the-fly 在线模式 
Offline 离线模式

Eclipse EclEmma Plugin

目前支持的启动类型:

Local Java application java程序(有main) 
Eclipse/RCP application 桌面应用程序 
Equinox OSGi framework 
JUnit test 单元测试 
TestNG test 
JUnit plug-in test 
JUnit RAP test 
SWTBot test 
Scala application

安装

Eclipse:Help->Eclipse Marketplace->搜索EclEmma 
技术分享图片

java application覆盖测试

点击工具栏中的按钮技术分享图片(在此之前可能需要自己先运行一遍代码)。测试结果如下: 
技术分享图片 
红色:测试未覆盖 
黄色:测试部分覆盖(通常是if和switch) 
绿色:测试已覆盖 
查看测试率,Window->Show View->Other->Java->Coverage 
技术分享图片
通常情况下,Coverage显示的是单次的覆盖测试结果,如果想常看多次的合并结果,点击技术分享图片 
技术分享图片
Project Explorer中查看覆盖率,Window->Preferences->General->Appearence->Label Decorations,选中Java Code Coverage。 
技术分享图片

JUnit Test覆盖测试

右键一个需要测试的文件,new->JUnit->JUnit Test Case,完成一个测试类。选择测试类启动覆盖测试。结果如图: 
技术分享图片 
技术分享图片

生成覆盖率报告

File->Export->Java->Coverage Report->选择需要生成报告的测试源以及目标地址技术分享图片





























以上是关于jacoco + eclipse单元测试覆盖率的主要内容,如果未能解决你的问题,请参考以下文章

JaCoCo:分析单元测试覆盖率的利器

单元测试——jacoco单元测试代码覆盖率检测

单元测试-代码覆盖率工具 -- JaCoCo

使用JaCoCo统计单元测试代码覆盖率

jenkins + jacoco 单元测试覆盖率

Jacoco 是不是记录单元测试持续时间?