- 浏览: 3500651 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
不论 TestCase 写的多么的好和完善,要想确保被测试的代码每一行都被执行,仍然是非常困难的。为了获取关于这方面的信息,我们可以使用 JCoverage 。
使用目的
JCoverage 正如其名,主要用于代码的覆盖测试。通过在被测试类的二进制文件中添加相应的指令,再配合 junit , jcoverage 可以给出被测试类的代码覆盖率,并给出测试过程中哪些语句被执行,哪些没有。通过这些信息,我们可以了解测试代码的测试质量,以及被测试类中哪些语句需要特别的关注(即那些未被覆盖的语句)。
当前的版本是 1.0.5 ,可以从 www.jcoverage.com/downloads.html 下载。在实际使用时,需要将 jcoverage 用到的类放到对应的 classpath 中。在这个版本中它所依赖的外部类以及版本:
- bcel 5.1 http://jakarta.apache.org/bcel/
- log4j 1.2.8 http://jakarta.apache.org/log4j/
- getopt 1.0.9 http://gnu.org/
- oro 2.0.7 http://jakarta.apache.org/oro/
用法
1. jcoverage 可以和 ant 配合使用,使这一过程自动化。基本用法:
- 编译被测试类和相应的被测试类的 junit 代码。
- 使用 <instrument> ,将 jcoverage 的指令加入到被测试类的二进制文件中。为了保证这一过程能够有效,请在编译被测试类时,设置 <javac> 的 debug 属性设为 yes 。
- 执行 junit 代码进行代码覆盖测试。这一步需要注意的是,需要将被注入指令的测试类要早于单元测试所需的测试类装入。为了确保这一点,需要使用 <classpath> ,使注入指令的测试类位于测试类之前 。
- 使用 <report> 产生覆盖测试的报告。
2. 使用例子:
<!-- 采用 debug 模式编译被测试类 -->
<javac destdir="${dist.coverage.classes}" deprecation="on" debug="yes" >
<src path="${src.code}"/>
<classpath refid="classpath"/>
</javac>
<!-- 编译被测试类的 junit 代码 -->
<javac destdir="${dist.coverage.junit}" deprecation="on">
<src path="${src.junit}"/>
<classpath refid="classpath"/>
</javac>
<!-- 定义 jcoverage 任务 -->
<path id="jcoverage">
<fileset dir="junit_lib">
<include name="jcoverage.jar"/>
</fileset>
</path>
<taskdef classpathref="jcoverage" resource="tasks.properties"/>
<!-- 给被测试类二进制代码中注入 jcoverage 的指令 -->
<instrument todir="${dist.coverage.instrument}">
<classpath refid="classpath"/>
<!-- 忽略 org.apache.common 的应用 -->
<ignore regex="org.apache.common.*"/>
<fileset dir="${dist.coverage.classes} ">
<include name="**/*.class"/>
</fileset>
</instrument>
<!-- 启动 junit ,进行代码覆盖测试 -->
<junit printsummary="yes" haltonfailure="no" fork="yes">
<classpath>
<!-- 注意:被注入指令的类,位置在测试类之前。
这样确保它们早于测试类备加载,使指令起作用。 -->
<pathelement location="${dist.coverage.instrument} "/>
<path refid="classpath"/>
<pathelement location="${dist. coverage.junit} "/>
</classpath>
<formatter type="xml"/>
<batchtest todir="${doc.jcoverageReport}">
<fileset dir="${src.junit}" includes="**/*Test.java" />
</batchtest>
</junit>
<!-- 产生代码覆盖测试报告 -->
<report srcdir="${src.code}" destdir="${doc.jcoverageReport}">
3. jcoverage 提供的 ant 任务标签有:
- <instrument> ,在类的二进制文件中注入 jcoverage 指令。注意:一定是 debug 模式下编译的类。
- <report> ,产生 jcoverage 报告,默认格式是 HTML 。也可以产生 XML 格式方便应用客户自定义的 xslt 产生其他格式的报告。产生 XML 格式的报告:
<report srcdir="${src.code}" destdir="${doc.jcoverageReport}" format="xml" >
- <merge> ,整合多个由 jcoverage 产生的输出文件。整个 jcoverage 实际的运作过程是:首先, jcoverage 给测试类注入指令产生新类,被注入指令的类在 junit 运行过程中产生输出文件(后缀为 ser ),最后根据输出文件产生报告。如果有多个输出文件, jcoverage 提供了 <merge> 来整合这些文件,最后,从整合文件中产生整体报告。用法:
<merge>
<fileset dir="${basedir}">
<include name="**/jcoverage.ser"/>
</fileset>
</merge>
- <check> ,检查测试是否达到设定的标准,它可以和 <report> 配合使用。使用例子:
例1 :
<check branch="95" line="95"/> ,意思是分支覆盖率需要达到 95% ,行覆盖率达到 95% 。
例2
<check branch="95" line="95">
<regex pattern="xptoolkit.jcoverage.*" branch="85" line="95"/>
</check>
包名符合 xptoolkit.jcoverage.* 模式的分支覆盖率达到 85% ,行覆盖率达到 95% 其余的分支覆盖率需要达到 95% ,行覆盖率达到 95% 。
检查表
在使用 jcoverage 时需要注意的问题:
- 被 jcoverage 注入指令的类必须是在 debug 模式下编译的类。建议将那些使用 debug 模式编译的类的存放与最终的产品的目录分开。
- 使用了 <instrument> 的类,与源类的目录也最好分开。
- 对于那些使用了 AOP (如 AspectJ )技术的项目, jcoverage 不能很好的应用到那些已经添加了 Aspect 信息的类。
- 代码覆盖工具只是给出了指导性的意见,不要过分依赖和相信它的结果。
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74147在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3757原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23491Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2133FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5516我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2346WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1565Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2120终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14838大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1709charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22612Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4882来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2370本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8685一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2902近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3700目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2537Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2099由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 3002安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1854本文介绍物理地址扩展 ...
相关推荐
maven-jcoverage-plugin-1.0.8.jar
maven-jcoverage-plugin-1.0.jar
maven-jcoverage-plugin-1.0.9.jar
maven-jcoverage-plugin-1.0.7.jar
maven-jcoverage-plugin-1.0.6.jar
maven-jcoverage-plugin-1.0.5.jar
maven-jcoverage-plugin-1.0.4.jar
maven-jcoverage-plugin-1.0.3.jar
maven-jcoverage-plugin-1.0.2.jar
Cobertura is a free Java code coverage... It is based on jcoverage 1.0.5. See the Cobertura web page and wiki for more details. Since 2.0.0, Cobertura versions follow the Semantic versioning guidelines.
Maven作者插件生成一个HTML报告,该报告显示从其他Maven报告(Checkstyle,FindBugs,PMD,Lint4j,JavaNCSS,JCoverage,Cobertura,Emma,Clover,任务列表等)收集的信息,并按源文件的作者进行分类。
`jcoverage.ser`文件可能包含的是代码覆盖率数据,这在单元测试和代码质量评估中非常有用。AntME可能集成了一种代码覆盖率工具,帮助开发者了解测试覆盖了多少代码行,以便改进测试用例。 `src`目录通常存放源代码...