测试覆盖率 使用小记

本文介绍了三种流行的代码覆盖率工具:Cobertura、Clover和EclEmma。Cobertura是一款开源工具,通过检测基本代码来测量测试覆盖率;Clover是一款商业工具;EclEmma则结合了Eclipse和Emma的优势,提供了强大的图形界面支持。文章还详细探讨了EclEmma的工作原理及其配置选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一。

Cobertura

是一种开源工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码和没有执行哪些代码,来测量测试覆盖率。除了找出未测试到的代码并发现 bug 外,Cobertura 还可以通过标记无用的、执行不到的代码来优化代码,还可以提供 API 实际操作的内部信息。Elliotte Rusty Harold 将与您分享如何利用代码覆盖率的最佳实践来使用 Cobertura。

Cobertura的对应Eclipse 插件coverlipse:  http://coverlipse.sf.net/update

不过略有不足的事:不支持junit4的测试方法,如果想用coverlipse的话,这只能把测试类转化成junit3的方式了。不过你用junit4写的类如果方法命名比较规范的话,转化还是很方便的。

 

二。

测试覆盖率是商业的clover 

 

三。

EclEmma

Emma  的作者开发 Emma 之初,程序员已经有了各种各样优秀的开源 Java 开发工具。EclEmma 的出现弥补了 Emma 用户一个大的遗憾 ---- 缺乏图形界面以及对集成开发环境的支持。将 Eclipse 和 Emma 这两个在各自领域最为优秀的工具结合起来,这就是 EclEmma 为我们提供的。

 

本人推荐EclEmma 开源且功能强大,支持junit4

注意点:

对于一些不可加过密的jar. 请勾上“In-place instrumentation”项,要不然可能会出错用junit测试能通过。但

用EclEmma测试时,则能不过的情况。

 

 

图 9 EclEmma 的配置页面
图 9  EclEmma 的配置页面

为了了解 EclEmma 是如何获得覆盖测试数据的,我们需要先对 Emma 有初步的了解。通常代码覆盖测试工具都需要对被执行的代码进行修改。而 Emma 提供了两种方式来完成这件事。

  1. 预插入模式:对程序进行测量之前,需要采用 Emma 提供的工具对 class 文件或者 jar 文件进行修改。修改完成之后的代码可以立刻被执行。覆盖测试的结果将会被存放到指定的文件中。
  2. 即时插入模式:即 时插入模式不需要事先对代码进行修改。相反,对代码的修改是通过一个 Emma 定制的 Class loader(类载入器)进行的。这种方式的优点很明显,我们不需要对 class 或者 jar 文件进行任何修改。缺点是我们为了获得测试的结果,需要用 Emma 提供的命令 emmarun 来执行 Java 应用程序。

使 用即时插入模式的优点很明显:class 文件和 jar 文件不会被修改。而预插入模式的应用范围更为广泛,对于某些需要嵌入到框架中运行的代码来说(例如 EJB),我们只能使用预插入模式。EclEmma 仅仅使用了 Emma 的预插入模式来工作,不过 EclEmma 缺省会在临时目录中创建 class 文件和 jar 文件的副本来进行修改,因此在 workspace 中 class 和 jar 文件仍然保持原样。虽然听上去很好,但是由于需要修改 classpath 来使用修改过的 class 和 jar 文件,对于不能修改 classpath 的应用(例如 Eclipse RCP 和 JUnit Plugin Test)来说,我们还是只能选择修改 workspace 中的 class 文件和 jar 文件。对于 Java Application 和 JUnit 类型的覆盖测试,我们可以在配置对话框中选中“In-place instrumentation”项来指定直接修改 Workspace 中的 .class 文件和 .jar 文件。

 

参见:

 

1.用 Cobertura 测量测试覆盖率

http://www.ibm.com/developerworks/cn/java/j-cobertura/

2.clover

http://sunnylocus.javaeye.com/blog/299781

3.EclEmma

http://www.eclemma.org/index.html

http://www.ibm.com/developerworks/cn/java/j-lo-eclemma/

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值