注意点
- 需要Copy cobertura.jar及其LIB到TOMCAT/COMMON/LIB:
- 只有当TOMCAT关闭的时候,才会写cobertura.ser文件
步骤
- start up tomcat
- build war
- deploy web application
- web test
- undeploy
- shut down
-
coverage 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 = " http://localhost:8080/manager " />
< 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-INF\web.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-INF\web.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 >
< 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 = " http://localhost:8080/manager " />
< 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-INF\web.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-INF\web.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 >