注意點
- 需要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
>
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

