首页 / 软件开发 / JAVA / 集成使用cobertura和tomcat
集成使用cobertura和tomcat2011-07-01注意点需要Copy cobertura.jar及其LIB到TOMCAT/COMMON/LIB:只有当TOMCAT关闭的时候,才会写cobertura.ser文件步骤start up tomcatbuild wardeploy web applicationweb testundeployshut downcoverage report附build.xml<project name="KSystem" default="smoketest" basedir="."> <property environment="env"/> <property name="checkstyle.dir" value="${env.CHECKSTYLE_HOME}" /> <path id="checkstyle.classpath"> <fileset dir="${checkstyle.dir}"> <include name="checkstyle-all-4.1.jar" /> </fileset> </path> <property name="cobertura.dir" value="${env.COBERTURA_HOME}" /> <path id="cobertura.classpath"> <fileset dir="${cobertura.dir}"> <include name="cobertura.jar" /> </fileset> </path> <taskdef name="jcsc" classname="rj.tools.jcsc.ant.JCSCTask" classpath="${env.JCSC_HOME}/lib/jcsc.jar" /> <taskdef resource="checkstyletask.properties" classpathref="checkstyle.classpath" /> <taskdef classpathref="cobertura.classpath" resource="tasks.properties" /> <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpath="${env.PMD_HOME}/lib/pmd-3.7.jar"/> <!-- master build --> <property name="project.dir" value="${basedir}" /> <property name="project.lib.dir" value="${project.dir}/WEB-INF/lib" /> <property name="build.dir" value="${basedir}/build" /> <property name="out.dir" value="${build.dir}" /> <property name="out.file.name" value="${ant.project.name}" /> <property name="classes.dir" value="${out.dir}/classes" /> <property name="src.dir" value="${project.dir}/src" /> <property name="webtests.dir" value="${project.dir}/webtests" /> <property name="instrumented.dir" value="${out.dir}/instrumented" /> <property name="cvs.repository" value=":pserver:ci:ci@192.168.126.10:/KSystem"/> <property name="cvs.package" value="${ant.project.name}"/> <target name="checkout"> <cvs command="update -d -P"/> </target> <target name="qa.build" description="build java file including cobertura for coverage test"> <javac target="1.4" source="1.4" destdir="${classes.dir}" debug="yes" encoding="utf-8"> <src path="${src.dir}" /> <src path="${tests.dir}" /> <include name="**/*.java" /> <classpath refid="compile.classpath"/> <include name="${cobertura.path}" /> <!-- when i need do QA, the classpath is need, otherwise, donot include the classpath --> <classpath refid="cobertura.classpath" /> </javac> <copy todir="${classes.dir}"> <fileset dir="${src.dir}"> <exclude name="**/*.java"/> </fileset> </copy> </target> <target name="initdir"> <delete dir="${reports.jcsc.dir}" /> <delete dir="${reports.jcsc.dir}/xsl" /> <delete dir="${reports.checkstyle.dir}" /> <delete dir="${reports.cobertura.dir}" /> <delete dir="${reports.cobertura.xml.dir}" /> <delete dir="${reports.cobertura.html.dir}" /> <delete dir="${reports.junit.dir}" /> <delete dir="${reports.junit.html.dir}" /> <delete dir="${reports.junit.xml.dir}" /> <delete dir="${reports.pmd.dir}" /> <delete dir="${reports.pmd.xml.dir}" /> <delete dir="${reports.dir}"/> <delete dir="${out.dir}" /> <delete dir="${classes.dir}" /> <mkdir dir="${out.dir}" /> <mkdir dir="${classes.dir}" /> <mkdir dir="${reports.dir}" /> <mkdir dir="${reports.jcsc.dir}" /> <mkdir dir="${reports.jcsc.dir}/xsl" /> <copy todir="${reports.jcsc.dir}/xsl"> <fileset dir="${env.JCSC_HOME}/html/xml/xsl" /> </copy> <mkdir dir="${reports.checkstyle.dir}" /> <mkdir dir="${reports.cobertura.dir}" /> <mkdir dir="${reports.cobertura.xml.dir}" /> <mkdir dir="${reports.cobertura.html.dir}" /> <mkdir dir="${reports.junit.dir}" /> <mkdir dir="${reports.junit.html.dir}" /> <mkdir dir="${reports.junit.xml.dir}" /> <mkdir dir="${reports.pmd.dir}" /> <mkdir dir="${reports.pmd.xml.dir}" /> </target> <property name="tomcat.manager.url" value="" /> <property name="tomcat.username" value="admin" /> <property name="tomcat.password" value="admin" /> <property name="webapp.name" value="${ant.project.name}" /> <property name="tomcat.home" value="${env.CATALINA_HOME}" /> <target name="tomcat.startup"> <exec executable="${tomcat.home}/bin/startup.bat" /> </target> <target name= "tomcat.shutdown"> <exec executable="${tomcat.home}/bin/shutdown.bat" /> </target> <property file="tomcatTasks.properties" /> <taskdef file="tomcat.properties"> <classpath> <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/> </classpath> </taskdef> <target name="tomcat.deploy" description="Install application in Tomcat"> <deploy url="${tomcat.manager.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${webapp.name}" war="file:${out.dir}/${out.file.name}.war"/> </target> <target name="tomcat.undeploy" description="Remove application in Tomcat"> <undeploy url="${tomcat.manager.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${webapp.name}"/> </target> <!-- make report--> <property name="reports.dir" value="${out.dir}/reports" /> <property name="reports.jcsc.dir" value="${reports.dir}/jcsc" /> <property name="jcscrules.path" value="${env.JCSC_HOME}/rules/genie.jcsc.xml" /> <property name="reports.checkstyle.dir" value="${reports.dir}/checkstyle" /> <property name="checksytlerule.path" value="${env.CHECKSTYLE_HOME}/sun_checks.xml" /> <property name="reports.cobertura.dir" value="${reports.dir}/coverage" /> <property name="reports.cobertura.xml.dir" value="${reports.cobertura.dir}/xml" /> <property name="reports.cobertura.html.dir" value="${reports.cobertura.dir}/html" /> <property name="reports.junit.dir" value="${reports.dir}/junit" /> <property name="reports.junit.xml.dir" value="${reports.junit.dir}/xml" /> <property name="reports.junit.html.dir" value="${reports.junit.dir}/html" /> <property name="reports.pmd.dir" value="${reports.dir}/pmd" /> <property name="reports.pmd.xml.dir" value="${reports.pmd.dir}/xml" /> <property name="out.junit.textType" value="xml" /> <target name="junitreport" description="generate reports of junit"> <junitreport todir="${reports.junit.xml.dir}"> <fileset dir="${reports.junit.xml.dir}"> <include name="TEST-*.xml" /> </fileset> <report format="frames" todir="${reports.junit.html.dir}" /> </junitreport> </target> <target name="jcscreport"> <jcsc rules="${jcscrules.path}" destdir="${reports.jcsc.dir}"> <fileset dir="${src.dir}" includes="**/*.java"/> </jcsc> </target> <target name="checkstylereport" > <property name="checkstylereport.path" value="${reports.checkstyle.dir}/checkstyle_report.xml" /> <checkstyle config="${checksytlerule.path}" failureProperty="checkstyle.failure" failOnViolation="false"> <formatter type="xml" tofile="${checkstylereport.path}"/> <fileset dir="src" includes="**/*.java"/> </checkstyle> </target> <target name="pmd"> <pmd shortFilenames="true"> <ruleset>rulesets/favorites.xml</ruleset> <ruleset>basic</ruleset> <formatter type="xml" toFile="${reports.pmd.xml.dir}/pmd.xml" /> <fileset dir="${src.dir}"> <include name="**/*.java"/> </fileset> </pmd> </target> <target name="instrument"> <delete file="cobertura.ser"/> <delete dir="${instrumented.dir}" /> <mkdir dir="${instrumented.dir}" /> <cobertura-instrument todir="${instrumented.dir}"> <ignore regex="org.apache.log4j.*" /> <fileset dir="${classes.dir}"> <include name="**/*.class" /> <exclude name="**/*Test.class" /> <exclude name="**/AllTests.class" /> </fileset> </cobertura-instrument> <copy todir="${instrumented.dir}"> <fileset dir="${classes.dir}"> <exclude name="**/*.class"/> </fileset> </copy> </target> <target name="coverage-check"> <cobertura-check branchrate="34" totallinerate="100" /> </target> <target name="coverage-report"> <cobertura-report srcdir="${src.dir}" destdir="${reports.cobertura.xml.dir}" format="xml" /> </target> <target name="alternate-coverage-report"> <cobertura-report destdir="${reports.cobertura.html.dir}"> <fileset dir="${src.dir}"> <include name="**/*.java"/> </fileset> </cobertura-report> </target> <!-- for this project --> <path id="compile.classpath"> <fileset dir="${project.lib.dir}"> <include name="**/*.jar" /> </fileset> </path> <path id="web.compile.classpath"> <fileset dir="${env.TOMCAT_HOME}/webapps/${ant.project.name}/WEB-INF/classes"> <include name="**/*.class" /> </fileset> </path> <!-- smoke test --> <target name="unittest" depends="qa.build" description="unit test using nunit"> <!-- target unittest.overide means the a project can selfdefine itself"s unit target, the test depends some special conditions. that a project, which would build the unittest project, defines a unittest.override, so, i will call the unittest.override target, instead of unittest --> <junit fork="yes" dir="${basedir}" failureProperty="test.failed" > <classpath location="${instrumented.dir}" /> <classpath location="${classes.dir}" /> <classpath refid="compile.classpath" /> <classpath refid="cobertura.classpath" /> <formatter type="${out.junit.textType}"/> <batchtest fork="yes" todir="${reports.junit.xml.dir}" > <fileset dir="${tests.dir}"> <include name="**/*Test.java"/> </fileset> </batchtest> </junit> </target> <target name="smoketest" > <property name="tests.dir" value="${project.dir}/tests" /> <antcall target="checkout"></antcall> <antcall target="initdir"></antcall> <antcall target="qa.build"></antcall> <antcall target="instrument"></antcall> <antcall target="unittest"></antcall> <antcall target="junitreport"></antcall> <antcall target="coverage-report"></antcall> <antcall target="alternate-coverage-report"></antcall> <antcall target="jcscreport"></antcall> <antcall target="checkstylereport"></antcall> <antcall target="pmd"></antcall> </target> <!-- system test --> <target name="webtest"> <junit fork="yes" dir="${basedir}" failureProperty="test.failed" > <classpath location="${classes.dir}" /> <classpath location="${tomcat.home}/webapps/${ant.project.name}/WEB-INF/classes" /> <classpath refid="compile.classpath" /> <classpath refid="cobertura.classpath" /> <formatter type="${out.junit.textType}"/> <batchtest fork="yes" todir="${reports.junit.xml.dir}" > <fileset dir="${tests.dir}"> <include name="**/*Test.java"/> </fileset> </batchtest> </junit> </target> <target name="buildwar"> <property name="jsp.dir" value="${project.dir}/jsp" /> <war destfile="${out.dir}/${out.file.name}.war" webxml="${project.dir}WEB-INFweb.xml"> <fileset dir="${jsp.dir}"> <include name="**/*.jsp" /> <include name="**/*.html" /> <include name="**/*.htm"/> </fileset> <webinf dir="${project.dir}WEB-INF"> <exclude name="${project.dir}WEB-INFweb.xml" /> </webinf> <classes dir="${out.dir}/classes" /> </war> </target> <target name="systemtest"> <property name="tests.dir" value="${project.dir}/webtests" /> <antcall target="checkout"></antcall> <parallel threadCount="2"> <ant target="tomcat.startup" /> <sequential> <sleep seconds="4"/> <antcall target="initdir"></antcall> <antcall target="qa.build"></antcall> <antcall target="instrument"></antcall> <antcall target="buildwar"></antcall> <antcall target="tomcat.deploy"></antcall> <antcall target="webtest"></antcall> <antcall target="tomcat.undeploy"></antcall> <antcall target="tomcat.shutdown"></antcall> <antcall target="junitreport"></antcall> <antcall target="coverage-report"></antcall> <antcall target="alternate-coverage-report"></antcall> <antcall target="jcscreport"></antcall> <antcall target="checkstylereport"></antcall> <antcall target="pmd"></antcall> </sequential> </parallel> <delete dir="${tomcat.home}/webapps/${webapp.name}" /> </target> </project>
收藏该网址