cobertura-1.9.4.1结合tomcat生成测试报告
1. 下载 cobertura-1.9.4.1.zip
2. 将cobertura.jar、lib下的jar包copy到$TOMCAT_HOME/lib下。
3. 将coberturaFlush.war copy到$TOMCAT_HOME/webapps下。
4. 编写build.properties
?
# The source code for the examples can be found in this directorysrc.dir=/home/a/project/src/mbr_luna_subway_20120221_jan/subway-biz/src# The path to cobertura.jarcobertura.dir=/home/a/project/cobertura-1.9.4.1# Classes generated by the javac compiler are deposited in this directoryclasses.dir=/home/a/project/subway-bizservice/WEB-INF/classes# Instrumented classes are deposited into this directoryinstrumented.dir=/home/a/project/src/bak# All reports go into this directoryreports.dir=/home/a/project/result# Coverage reports are deposited into these directoriescoverage.html.dir=${reports.dir}/cobertura-html#server.bin.dir=/usr/local/dev-tomcat2.0-api-mobile/binserver.bin.dir=/home/a/project/tomcattop_bserv/binserName=cobertura.ser#flush urlflush.url=http://10.232.132.58:47080/coberturaFlush/flushCoberturacoverage.xml.dir=${reports.dir}/cobertura-xmlcoverage.summaryxml.dir=${reports.dir}/cobertura-summary-xmlcoverage.html.dir=${reports.dir}/cobertura-html
?? 注意:flush.url 是你要测试的tomcat下对应的coberturaFlush.war中的servlet
?
5.编写build.xml
<?xml version="1.0" encoding="UTF-8"?><project name="cobertura.examples.basic" default="coverage-report" basedir="."><description> Cobertura - http://cobertura.sourceforge.net/ Copyright (C) 2003 jcoverage ltd. Copyright (C) 2005 Mark Doliner <thekingant@users.sourceforge.net> Cobertura is licensed under the GNU General Public License Cobertura comes with ABSOLUTELY NO WARRANTY </description><property file="build.properties" /><path id="cobertura.classpath"><fileset dir="${cobertura.dir}"><include name="*.jar" /><include name="lib/*.jar"/></fileset></path><taskdef classpathref="cobertura.classpath" resource="tasks.properties"/><target name="init"><mkdir dir="${classes.dir}" /><mkdir dir="${instrumented.dir}" /><mkdir dir="${coverage.xml.dir}" /><mkdir dir="${coverage.html.dir}" /></target><target name="instrument" depends="init"><!--Remove the coverage data file and any old instrumentation.--><delete file="${serName}"/><!--Instrument the application classes, writing theinstrumented classes into ${build.instrumented.dir}.--><cobertura-instrument todir="${instrumented.dir}" datafile="${serName}"><!--The following line causes instrument to ignore anysource line containing a reference to log4j, for thepurposes of coverage reporting.--><ignore regex="org.apache.log4j.*" /><fileset dir="${classes.dir}"><!--Instrument all the application classes, butdon't instrument the test classes.--><include name="**/*.class" /></fileset></cobertura-instrument><copy todir="${classes.dir}" overwrite="true"> <fileset dir="${instrumented.dir}"> <include name="**/*.class"/> </fileset> </copy><copy file="${serName}" todir="${server.bin.dir}" overwrite="true" /></target><target name="coverage-report" depends="merge"><!--Generate an XML file containing the coverage data usingthe "srcdir" attribute.--><cobertura-report datafile="total.ser" srcdir="${src.dir}" destdir="${coverage.html.dir}" format="html" /></target><!--flush data to serfile--><target name="flush" ><get src="${flush.url}" dest="log.txt"/><sleep milliseconds="3000"/></target><target name="alternate-coverage-report"><!--Generate a series of HTML files containing the coveragedata in a user-readable form using nested source filesets.--><cobertura-report destdir="${coverage.html.dir}"><fileset dir="${src.dir}"><include name="**/*.java"/></fileset></cobertura-report></target><target name="merge" depends="flush"><copy todir="${basedir}" overwrite="true"> <fileset dir="${server.bin.dir}"> <include name="**/*.ser"/> </fileset> </copy> <cobertura-merge datafile="total.ser"> <fileset dir="${basedir}"> <include name="*.ser"/> </fileset> </cobertura-merge><echo message="merge file"/> </target><target name="clean" description="Remove all files created by the build/test process."><delete dir="${classes.dir}" /><delete dir="${instrumented.dir}" /><delete dir="${reports.dir}" /><delete file="cobertura.log" /><delete file="cobertura.ser" /></target></project>
?
6. 运行命令ant。原理:
?? 1)将待统计的代码的class文件重新生成class,添加了统计代码的代码。
?? 2) 运行测试用例时,会将内容统计到$TOMCAT_HOME/bin/cobertura.ser中。
?? 3) 运行结束之后,通过调用http://10.232.132.58:47080/coberturaFlush/flushCobertura,将serverlet中统计到的信息序列化到cobertura.ser文件中。
?? 4) 最后通过cobertura-report.sh 这个命令生成报告。
?
7. 运行测试用例。
?
8. 重新运行ant命令,生成测试报告。