- 浏览: 365062 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
jiangli19192:
...
自己写的一个启动JBoss服务器的bat批处理 -
56553655:
最好这样:java -Xms3700M -Xmx3700M - ...
测试本机JVM支持的最大内存 -
lizhiy05:
学习一哈……
Web Services体系结构及相关概念 -
ghy200692162:
System.out.println("开始注册Js ...
基于OSGi的JSF Web组件开发问题求解 -
xiao888lin:
你的头像看起来很像我们宿舍老四。。。
测试本机JVM支持的最大内存
Cobertura是一个基于jcoverage的免费Java工具,它能够显示哪一部分代码被你的测试所覆盖,并可生成HTML或XML报告. 它通过检测基本的代码,并观察在测试包运行时执行了哪些代码和没有执行哪些代码,来测量测试覆盖率。除了找出未测试到的代码并发现 bug 外,Cobertura 还可以通过标记无用的、执行不到的代码来优化代码,还可以提供 API 实际操作的内部信息。
在工具的选择上我曾经也是犹豫过,emma看样子好像也是一个不错的选择,因为他对开发覆盖率细节方面的关注让我还是感觉比较贴心,但是emma生成的report确实有些让人不太舒服,感觉还是Cobertura的report更加完善些。最后还是选择了Cobertura。如果大家需要了解这两个工具各自的优势可以浏览以下主题:
--------------------------------------------------------------------------------
http://raibledesigns.com/rd/entry/emma_vs_cobertura_for_code
http://kwakil.blogspot.com/2006/07/cobertura-vs-emma.html
--------------------------------------------------------------------------------
尽管emma在maven中生成的报表没有Cobertura好看,但是有一个基于emma的Eclipse插件却是相当棒的一个工具,这个工具可以帮助开发人员对测试用例有针对性的关注代码的覆盖率。为了保证本专题的完整性,我打算再开一个专题专门说明emma的Eclipse插件的使用。
要想在Maven2中使用Cobertura生成单元测试报告,首先需要做的就是更新你的Maven2版本,我以前用的是version2.0.4,Cobertura好像并未对该版本的Maven2提供支持,而且官方也没有明确说明plugin只支持到了version2.0.6,最后熬了好多天,我的同事才发现原来是版本的问题。最后我将我的Maven2版本升级到version2.0.6,执行了一下site命令,呵呵呵呵,期待已久的cobertura目录终于出现了。
其实Cobertura的官方Maven Plugin是有bug的,你可以在Maven的官方网站上找到相关信息:
http://jira.codehaus.org/browse/MCOBERTURA-61
所以我们现在虽然down下来了Cobertura的Maven Plugin,但是还是没法生成正确的Coverage Reporting,后来同事在网上发现了一个修正了官方bug的Maven Plugin,做法是直接下载到本地,然后手动在Maven2仓库中覆盖掉从官方下载下来的jar文件。
如果你用的是JDK5可以从下面的网址下载:
http://www.artofsolving.com/files/m2/cobertura-1.8.jar
如果你用的是JDK1.4那就从下面的网站下载:
http://dist.codehaus.org/mule/dependencies/maven2/cobertura/cobertura/1.8/cobertura-1.8.jar
下面是Cobertura Plugin提供的一些goal,帖出来方便查阅:
--------------------------------------------------------------------------------
Goal Description
cobertura:check Check the Last Instrumentation Results.
cobertura:clean Clean up rogue files that cobertura maven plugin is tracking.
cobertura:dump-datafile Cobertura Datafile Dump Mojo
cobertura:instrument Instrument the compiled classes.
cobertura:cobertura Instruments, Tests, and Generates a Cobertura Report.
--------------------------------------------------------------------------------
说了半天,还没有说到如何在Maven2中进行配置,由于Maven官方提供的Cobertura插件只支持标准的测试发布路径(有些喜欢将测试类和工程类编译到同一个路径下,但是Maven官方推荐的路径确实将测试类和工程类分开编译到不同的路径下),那首先需要修改编译路径,如果在你的Project POM中没有对编译路径、资源路径做过任何声明,那Maven就会默认取标准路径,如果你的工程真的没有设置这些信息,那么,你很幸运,可以跳过此步。但是如果你的路径不是标准路径,请按以下方式进行修改:
- <sourceDirectory>src/main/java</sourceDirectory>
- <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
- <testSourceDirectory>src/test/java</testSourceDirectory>
- <outputDirectory>target/classes</outputDirectory>
- <testOutputDirectory>target/test-classes</testOutputDirectory>
通常情况下我们只需要进行如下配置就足可以应付当前的测试需求了:
- <reporting>
- <outputDirectory>target/site</outputDirectory>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>cobertura-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
当QA拿到test case运行的coverage reporting 时,通常希望能够进行打包以和开发人员取得联系,本人目前尚未找到合适的Maven打包方法,由于在Maven2中支持执行Ant脚本,因此我在这里为build节点中的plugins节点提供了一个用ant脚本写的plugin,在Maven命令行通过执行site命令便可以将最后的测试报告(包括测试代码覆盖率和测试用例的运行情况reports)进行打包
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <phase>site</phase>
- <configuration>
- <tasks>
- <copy todir="target/classes">
- <fileset dir="src/main/java">
- <include name="**/*.java" />
- </fileset>
- </copy>
- <jar destfile="target/cover-test-result.zip">
- <fileset dir="target/site">
- <include name="**/*.html" />
- <include name="**/*.css" />
- <include name="**/*.txt" />
- <include name="**/*.png" />
- <include name="**/*.js" />
- </fileset>
- </jar>
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
继续说Cobertura的附加配置:
通过上面的配置,我们已经可以对一个工程进行代码覆盖率测试了,但是Cobertura在你没有声明test case不用分析覆盖率的情况下,他会连同test case一起分析覆盖率,尽管这样不会影响我们整个工程的代码覆盖率,但是在生成的报告中多出一个testcase来,总让人感觉不是很舒服,因此,你可以采用Cobertura的一些附加配置来限制那些不用进行覆盖率测试的类,具体做法如下:
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>cobertura-maven-plugin</artifactId>
- <configuration>
- <instrumentation>
- <!--<ignore>.*</ignore>
- -->
- <excludes>
- <exclude>**/*Test.class</exclude>
- </excludes>
- </instrumentation>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>clean</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
将上面这段代码加入到build节点的plugins节点中。执行site命令,看看是不是已经没有test case的代码覆盖率report了?呵呵呵呵。
结束!!!!
发表评论
-
GIT使用批处理完成日常代码管理
2017-03-26 22:01 1228本文默认读者的本机是已经安装好了GIT本地端,因此对于GI ... -
在Maven2插件中用Velocity对配置文件的集中管理
2007-08-06 16:55 2352正如我在“用Velocity进行配置文件信息的集中管理 ”—— ... -
用Velocity进行配置文件信息的集中管理
2007-07-27 16:02 4567Apache从他诞生的那天起 ... -
测试驱动开发与EasyMock的使用
2007-07-17 22:19 1884测试驱动开发并不是什 ... -
在工程POM中内嵌Ant脚本
2007-07-17 22:14 1730由于每篇文章的字数有限制,我没办法在同一个专题中同时将相关的问 ... -
Maven2插件开发详解
2007-07-17 22:11 8906在Maven2强大功能的魅力 ... -
用Emma的Eclipse插件进行代码覆盖率测试
2007-07-17 22:00 6858如上一个关于Cobertura的专题所说,我这里单开一个专题来 ... -
ant中使用cobertura分析测试用例的代码覆盖率
2007-07-17 21:48 4535这次还是配置问题,接上上次关于ant脚本模板的详细说明。对于一 ... -
我写的ant编译、打包、测试、测试报告生成和邮件发送模板
2007-07-17 21:40 4915js 代码 <?xml ve ... -
XFire使用举例
2007-07-17 21:32 2376闲来无事,顺便写个XFire的小例子,也算是打发时间了,o( ... -
Maven入门--较复杂的实例
2007-07-17 21:19 1602本文将使用一个较复杂的实例,讲述如何定制目录布局(即不使用M ... -
Maven入门--概念与实例
2007-07-17 21:15 1298Maven入门--概念与实例 最近由于工作原因在研 ... -
设计模式总结
2007-07-17 17:14 628设计模式 1) 控制倒置模式: 说到控制倒置模式,就不得不 ... -
Eclipse中常用快捷键总结
2007-07-17 16:57 1142Eclipse中常用快捷键总结: CTRL+SHI ... -
修改eclipse中的默认maven2资源仓库保存地址
2007-07-17 16:56 5812当你在eclipse中集成了maven2后,默认情况下,ecl ... -
用ant进行工程管理
2007-07-17 13:50 21041.典型地,一个ant工程脚本如下: < ... -
利用maven2为工程的jar文件内部打入版本信息
2007-07-17 13:42 17231.修改pom.xml文件,在proj ... -
比ant更强大的工具maven2之自动生成工程
2007-07-17 13:38 2923maven2是在ant的基础上发展起来的,并对ant的功能进行 ... -
OFBIZ开源电子商务学习心得
2007-07-17 13:36 2521看懂在APACHE网站上的英文文档确实是一项不小的挑战,下面说 ... -
开始每个模块功能编写时需要做的事情总结
2007-07-17 13:20 10881.对查询出的展示列表进行排序 2.检查SQL语句,并思 ...
相关推荐
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
cobertura-maven-plugin:Cobertura Maven插件
jar包,官方版本,自测可用
Cobertura 是一种代码覆盖测试工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码和没有执行哪些代码,来测量测试覆盖率。
Cobertura代码覆盖率测试工具介绍文档,Cobertura代码覆盖率测试工具介绍
Cobertura是一个测试案例覆盖率统计工具,此资源下载后,解压,配置上环境变量即可使用
Junit+ant+cobertura示例源码程序。
NULL 博文链接:https://terrencexu.iteye.com/blog/718834
NULL 博文链接:https://mwhgjava.iteye.com/blog/1297276
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用