How to run Cobertura as an ant build script from eclipse
2012-04-09 12:36
701 查看
Cobertura unlike eCobertura plugin, provides advanced code coverage reporting in xml and html formats. This is much more flexible for custom configuration as it can be controlled via the ant script. Replicate the steps below :
1) Download cobertura zip.
2) Create a java/groovy project named "Sample" in eclipse.
3) Create a simple java/groovy class and a corresponding unit testcase class to test it.. Place them in seperate or same packages as you wish.
4) Create a folder called lib under the Sample project folder (as Sample/lib).. Place junit.jar, apache ant.jar, and all the jars in the downloaded Cobertura zip (most importantly cobertura.jar) into the lib folder and include the jars in the project's classpath.
5) From the downloaded Cobertura zip, pick up the two files build.properties and build.xml and place them in your Sample project base. (as Sample/build.xml and Sample.build.properties)
6) The build.xml is the ant script to run Cobertura and it uses the configuration in build.properties file.
7) Change the contents of build.properties as shown below:
build.properties
---------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------
9) Running the above build.xml as an ant script in eclipse will create a folder hierarchy. The generated xml and html format reports can be found at Sample/cobertura/complete folder.
PS: Instead of running the script from eclipse you can also run the build.xml from a command line using the
ant -[options] command.
1) Download cobertura zip.
2) Create a java/groovy project named "Sample" in eclipse.
3) Create a simple java/groovy class and a corresponding unit testcase class to test it.. Place them in seperate or same packages as you wish.
4) Create a folder called lib under the Sample project folder (as Sample/lib).. Place junit.jar, apache ant.jar, and all the jars in the downloaded Cobertura zip (most importantly cobertura.jar) into the lib folder and include the jars in the project's classpath.
5) From the downloaded Cobertura zip, pick up the two files build.properties and build.xml and place them in your Sample project base. (as Sample/build.xml and Sample.build.properties)
6) The build.xml is the ant script to run Cobertura and it uses the configuration in build.properties file.
7) Change the contents of build.properties as shown below:
build.properties
---------------------------------------------------------------------------------------------------------------------
# The source code for the examples can be found in this directory src.dir=src # The path to cobertura.jar cobertura.dir=cobertura/complete # Classes generated by the javac compiler are deposited in this directory classes.dir=cobertura/complete/classes # Instrumented classes are deposited into this directory instrumented.dir=cobertura/complete/instrumented # All reports go into this directory
reports.dir=cobertura/complete/reports # Unit test reports from JUnit are deposited into this directory reports.xml.dir=${reports.dir}/junit-xml reports.html.dir=${reports.dir}/junit-html # Coverage reports are deposited into these directories coverage.xml.dir=${reports.dir}/cobertura-xml coverage.summaryxml.dir=${reports.dir}/cobertura-summary-xml coverage.html.dir=${reports.dir}/cobertura-html --------------------------------------------------------------------------------------------------------------------- 8) Now change the contents of build.xml as shown below: build.xml --------------------------------------------------------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <project name="Sample" default="coverage" basedir="."> <description> Cobertura - http://cobertura.sourceforge.net/ Copyright (C) 2003 jcoverage ltd. Copyright (C) 2005 Mark Doliner <thekingant@users.sourceforge.net> Copyright (C) 2006 Dan Godfrey 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="lib"> <include name="*.jar"/> </fileset> </path> <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/> <target name="init"> <mkdir dir="${classes.dir}" /> <mkdir dir="${instrumented.dir}" /> <mkdir dir="${reports.xml.dir}" /> <mkdir dir="${reports.html.dir}" /> <mkdir dir="${coverage.xml.dir}" /> <mkdir dir="${coverage.summaryxml.dir}" /> <mkdir dir="${coverage.html.dir}" /> </target> <target name="compile" depends="init"> <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="yes"> <classpath refid="cobertura.classpath" /> </javac> </target> <target name="instrument" depends="init,compile"> <!-- Remove the coverage data file and any old instrumentation. --> <delete file="cobertura.ser"/> <delete dir="${instrumented.dir}" /> <!-- Instrument the application classes, writing the instrumented classes into ${build.instrumented.dir}. --> <cobertura-instrument todir="${instrumented.dir}"> <!-- The following line causes instrument to ignore any source line containing a reference to log4j, for the purposes of coverage reporting. -->
<ignore regex="org.apache.log4j.*" /> <fileset dir="${classes.dir}"> <!-- Instrument all the application classes, but don't instrument the test classes. --> <include name="**/*.class" /> <exclude name="**/*Test.class" /> </fileset> </cobertura-instrument> </target> <target name="test" depends="init,compile"> <junit fork="yes" dir="${basedir}" failureProperty="test.failed"> <!-- Note the classpath order: instrumented classes are before the original (uninstrumented) classes. This is important. --> <classpath location="${instrumented.dir}" /> <classpath location="${classes.dir}" /> <!-- The instrumented classes reference classes used by the Cobertura runtime, so Cobertura and its dependencies must be on your classpath. --> <classpath refid="cobertura.classpath" /> <formatter type="xml" /> <test name="${testcase}" todir="${reports.xml.dir}" if="testcase" /> <batchtest todir="${reports.xml.dir}" unless="testcase"> <fileset dir="${src.dir}"> <include name="**/*Test.java" /> </fileset> </batchtest> </junit> <junitreport todir="${reports.xml.dir}"> <fileset dir="${reports.xml.dir}"> <include name="TEST-*.xml" /> </fileset> <report format="frames" todir="${reports.html.dir}" /> </junitreport> </target> <target name="coverage-check"> <cobertura-check branchrate="34" totallinerate="100" /> </target> <target name="coverage-report"> <!-- Generate an XML file containing the coverage data using the "srcdir" attribute. --> <cobertura-report srcdir="${src.dir}" destdir="${coverage.xml.dir}" format="xml" /> </target> <target name="summary-coverage-report"> <!-- Generate an summary XML file containing the coverage data using the "srcdir" attribute. --> <cobertura-report srcdir="${src.dir}" destdir="${coverage.summaryxml.dir}" format="summaryXml" /> </target> <target name="alternate-coverage-report"> <!-- Generate a series of HTML files containing the coverage data in a user-readable form using nested source filesets. --> <cobertura-report destdir="${coverage.html.dir}"> <fileset dir="${src.dir}"> <include name="**/*.java"/> <include name="**/*.groovy"/> </fileset> </cobertura-report> </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> <target name="coverage" depends="compile,instrument,test,coverage-report,summary-coverage-report,alternate-coverage-report" description="Compile, instrument ourself, run the tests and generate JUnit and coverage reports."/> </project>
---------------------------------------------------------------------------------------------------------------------
9) Running the above build.xml as an ant script in eclipse will create a folder hierarchy. The generated xml and html format reports can be found at Sample/cobertura/complete folder.
PS: Instead of running the script from eclipse you can also run the build.xml from a command line using the
ant -[options] command.
相关文章推荐
- How to Run a Custom Shell Script During an XCODE Build
- How to Run a Custom Shell Script During an XCODE Build
- JDev: How to make JDev run ant script in debug mode permanently
- How to Build an Android Project with Eclipse
- How to configure: TFS run as ant…
- How to integrate Cobertura into Ant script
- How to Run a Program as an Administrator in Windows 7
- How to run an existing SQL Server Agent Job from C#
- How to run ant script
- How to remove native support from an Android Project in eclipse because eclipse is showing errors in
- How to Run a Program as an Administrator in Windows 7
- How to Run a Program as an Administrator in Windows 7
- How to Run Linux from an USB Flash Drive
- How to run a Java Program as a daemon (service) on Linux (openSUSE) using a shell script
- eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
- How to build and run ARM Linux on QEMU from scratch
- How To Build Multi-control Components when Inheriting from an Existing Control (Intro and TextBox Example)
- How to build and run ARM Linux on QEMU from scratch
- How to make JDev run ant script in debug mode permanently
- How to call different methods as given in an array