xiekai-blog
北冥有魚,其名為鯤。鯤之大,不知其幾千里也。化而為鳥,其名為鵬。鵬之背,不知其幾千里也。怒而飛,其翼若垂天之云。是鳥也,海運則將徙于南冥。南冥者,天池也。
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-94 評論-56 文章-3 trackbacks-0
用Ant構(gòu)建Java項目(續(xù))
這一篇講述如何自動運行JUnit測試進行自動化測試。我們將JUnit測試放在test目錄。
第一步:編譯測試
首先,在build.xml文件里定義一個單獨的構(gòu)建目標(biāo),以便編譯測試源文件。
?
<target name="compile-tests" depends="compile">
??? <javac srcdir="${test.dir}" destdir="${build.test.dir}">
????? <classpath refid="project.classpath" />
??? </javac>
? </target>
compile-tests目標(biāo)用<javac>任務(wù)在test.dir目錄編譯測試源文件,并將結(jié)果類文件放入build.test.dir目錄,用project.classpath路徑作為測試代碼的類路徑。
第二步:運行測試
在build.xml文件里定義構(gòu)建目標(biāo),使所有的JUnit測試自動運行。
?
<target name="test" depends="compile-tests">
??? <junit haltonfailure="true">
????? <classpath refid="project.classpath" />
????? <formatter type="brief" usefile="false" />
????? <batchtest>
??????? <fileset dir="${build.test.dir}"
????????? includes="**/*Test.class" />
????? </batchtest>
????? <sysproperty key="doc.dir"?? value="${doc.dir}" />
????? <sysproperty key="index.dir" value="${index.dir}" />
??? </junit>
? </target>
test目標(biāo)的depends屬性生成與剛定義的compile-tests目標(biāo)的依存關(guān)系。
如果構(gòu)建成功,意味著所有的東西不僅都編譯過,還都通過了測試。
將haltonfailure屬性設(shè)為true會使構(gòu)建隨著任何測試失敗而失敗。
這里我們再次用project.classpath定義了運行JUnit測試的類路徑。
下面定義了一個輸出格式化器,在<formatter> 元素中,使用brief類型來輸出每個運行的測試用例的名稱及其統(tǒng)計信息,僅當(dāng)測試失敗時才有更詳細的信息(plain類型默認比brief類型輸出信息多一些;xml類型將測試結(jié)果以XML格式輸出)。將usefile屬性值設(shè)為false會將測試結(jié)果送往控制臺,而不是寫入文件。
<batchtest>任務(wù)收集從封閉<fileset>元素中返回的所有測試,并自動創(chuàng)建包含了所有測試的測試suite。我們將對所有的測試類用*Test.java命名約定取名,這些文件將編譯成*Test.class文件,放在<fileset>的build.test.dir性質(zhì)指向的目錄中。
最后,<sysproperty>元素定義系統(tǒng)性質(zhì)為一個鍵值對,這些性質(zhì)可以在測試代碼中訪問。這里,測試需要知道從哪里找到文檔,以及向哪里放入文檔的索引結(jié)果,在運行測試時我們將傳遞這些結(jié)果,例如,測試在運行時查看送入的doc.dir系統(tǒng)性質(zhì)來定位項目目錄結(jié)構(gòu)中doc目錄的絕對路徑。
要運行測試,請執(zhí)行test目標(biāo):
$?ant test
最后,打掃戰(zhàn)場
我們可以定義一個刪除所有構(gòu)建輸出的Ant目標(biāo)。
?
<target name="clean">
??? <delete dir="${build.dir}" />
? </target>
clean目標(biāo)使用<delete>任務(wù)來刪除build.dir所指的目錄。要刪除目錄,請運行clean目標(biāo):
$ ant clean
沖掉這些構(gòu)建輸出有積極的作用:從頭開始生成構(gòu)建,可以發(fā)現(xiàn)可能被累積構(gòu)建掩蓋的錯誤。
完整的build.xml:
<?
xml?version="1.0"
?>
<!--
??Excerpted?from?the?book,?"Pragmatic?Project?Automation"
??ISBN?0-9745140-3-9
??Copyright?2004?The?Pragmatic?Programmers,?LLC.??All?Rights?Reserved.
??Visit?www.PragmaticProgrammer.com
?
-->
<
project?
name
="dms"
?default
="compile"
?basedir
="."
>
??
??
<
property?
name
="build.dir"
??????location
="build"
/>
??
<
property?
name
="build.prod.dir"
?location
="${build.dir}/prod"
/>
??
<
property?
name
="build.test.dir"
?location
="${build.dir}/test"
/>
??
<
property?
name
="doc.dir"
????????location
="doc"
/>
??
<
property?
name
="index.dir"
??????location
="index"
/>
??
<
property?
name
="src.dir"
????????location
="src"
/>
??
<
property?
name
="test.dir"
???????location
="test"
/>
??
<
property?
name
="vendor.lib.dir"
?location
="vendor/lib"
/>
??
<
path?
id
="project.classpath"
>
????
<
pathelement?
location
="${build.prod.dir}"
?
/>
????
<
pathelement?
location
="${build.test.dir}"
?
/>
????
<
fileset?
dir
="${vendor.lib.dir}"
>
??????
<
include?
name
="*.jar"
/>
????
</
fileset
>
??
</
path
>
????
??
<
target?
name
="prepare"
>
????
<
mkdir?
dir
="${build.prod.dir}"
/>
????
<
mkdir?
dir
="${build.test.dir}"
/>
??
</
target
>
??
<
target?
name
="compile"
?depends
="prepare"
>
????
<
javac?
srcdir
="${src.dir}"
?destdir
="${build.prod.dir}"
>
??????
<
classpath?
refid
="project.classpath"
?
/>
????
</
javac
>
??
</
target
>
??
<
target?
name
="compile-tests"
?depends
="compile"
>
????
<
javac?
srcdir
="${test.dir}"
?destdir
="${build.test.dir}"
>
??????
<
classpath?
refid
="project.classpath"
?
/>
????
</
javac
>
??
</
target
>
??
<
target?
name
="test"
?depends
="compile-tests"
>
????
<
junit?
haltonfailure
="true"
>
??????
<
classpath?
refid
="project.classpath"
?
/>
??????
<
formatter?
type
="brief"
?usefile
="false"
?
/>
??????
<
batchtest
>
????????
<
fileset?
dir
="${build.test.dir}"
?
??????????includes
="**/*Test.class"
?
/>
??????
</
batchtest
>
??????
<
sysproperty?
key
="doc.dir"
???value
="${doc.dir}"
?
/>
??????
<
sysproperty?
key
="index.dir"
?value
="${index.dir}"
?
/>
????
</
junit
>
??
</
target
>
??
<
target?
name
="clean"
>
????
<
delete?
dir
="${build.dir}"
?
/>
??
</
target
>
??
</
project
>
下面再舉一個實際項目中用到的構(gòu)建文件的例子:
<?
xml?version="1.0"?
?>
<
project?
name
="JSBook"
?default
="compile"
?basedir
="."
>
??
<
property?
environment
="env"
?
/>
??
<
property?
name
="src"
?value
="WEB-INF/src"
?
/>
??
<
property?
name
="classes"
?value
="WEB-INF/classes"
?
/>
??
<
property?
name
="lib"
?value
="WEB-INF/lib"
?
/>
?
??
<
property?
name
="dist"
?value
="dist"
?
/>
??
??
<
path?
id
="task.classpath"
>
????
<
pathelement?
location
="${classes}"
?
/>
????
<
pathelement?
location
="${lib}"
?
/>
?
????
<!--
?Tomcat?5.0.16?Servlet?2.4?API?
-->
????
<
pathelement?
location
="${lib}/servlet-api.jar"
?
/>
????
<!--
?Tomcat?5.0.16?JSP?2.0?API?
-->
????
<
pathelement?
location
="${lib}/jsp-api.jar"
?
/>
??
</
path
>
????
??
<
target?
name
="init"
?
>
????
<
echo
>
Init?Complete?!
</
echo
>
????
<
echo
>
ant?home?=?${ant.home}?
</
echo
>
????
<
echo
>
java?home?=?${java.home}?
</
echo
>
????
<
echo
>
user?home?=?${user.home}?
</
echo
>
??????
??
</
target
>
??
??
<
target?
name
="compile"
?depends
="init"
?
>
????
<
javac?
classpathref
="task.classpath"
?srcdir
="${src}"
?destdir
="${classes}"
?
/>
????
<
echo?
level
="verbose"
>
Seen?with?-verbose
</
echo
>
????
<
echo?
level
="debug"
>
Seen?with?-debug
</
echo
>
????????
????
<
echo
>
Compilation?Complete?!
</
echo
>
??
</
target
>
??
??
<
target?
name
="war"
?
>
????
<
jar?
jarfile
="${dist}/JSPBook.war"
?basedir
="."
/>
??
</
target
>
</
project
>
???
也許你已經(jīng)看出來了,這就是〈〈jsp2.0技術(shù)手冊〉〉里面的build.xml文件啦!
posted on 2006-08-31 11:42
小言身寸
閱讀(773)
評論(0)
編輯
收藏
所屬分類:
JAVA相關(guān)技術(shù)
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
Java學(xué)習(xí)從入門到精通的學(xué)習(xí)方法 (轉(zhuǎn))
利用MAP進行排序
Weblogic遠程重啟動命令
取得最小開始日期,JAVA中Set和Iterator的使用一例
WebLogic 如何設(shè)置session超時時間
RiA:Rich Internet Application(C/B/S架構(gòu))
用Ant構(gòu)建Java項目(續(xù))
用Ant構(gòu)建Java項目
TOMCAT創(chuàng)建和發(fā)布WEB應(yīng)用(TOMCAT與Java Web開發(fā)技術(shù)詳解 第二章 閱讀筆記)
java中連接Oracle數(shù)據(jù)源
<%--
共有人在同時閱讀此Blog。
--%>
<%--
--%>
<
2006年8月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
. NET 開發(fā)(3)
eclipse plugin(3)
Eclipse/MyEclipse(4)
javascript(2)
JAVA相關(guān)技術(shù)(17)
UML(1)
應(yīng)用服務(wù)器(4)
數(shù)據(jù)庫/SQL語言(11)
日本見聞(2)
日語相關(guān)(24)
軟件應(yīng)用(11)
軟件測試(2)
雷人語錄
電子商務(wù)?物流(1)
音樂之聲(2)
項目管理(7)
隨筆檔案
2010年8月 (2)
2010年7月 (1)
2010年6月 (1)
2010年2月 (1)
2009年10月 (1)
2009年7月 (2)
2009年6月 (2)
2008年10月 (1)
2008年8月 (5)
2008年2月 (3)
2008年1月 (1)
2007年12月 (1)
2007年11月 (4)
2007年10月 (2)
2007年7月 (3)
2007年6月 (1)
2007年5月 (1)
2007年2月 (3)
2007年1月 (5)
2006年12月 (4)
2006年10月 (11)
2006年9月 (9)
2006年8月 (12)
2006年7月 (9)
2006年6月 (7)
文章分類
千葉集(2)
日語動詞(初中級)(1)
文章檔案
2006年12月 (1)
2006年11月 (1)
2006年9月 (1)
相冊
夜色下的中科大一角
私の寫真館001
私の寫真館002
私の寫真館003
ebook_download
pl/sql
VB6/VB.net
得益網(wǎng)
Favorite Blog
ErixHao的專欄_模式深度思考
loveyeah
lzgsl的博客_IT日本語
千山鳥飛絕
外語學(xué)習(xí)資源
島田九美子
謙卑自牧,寬于待人_weblogic
Friend's Blog
jyuan-blog
一中的同學(xué)們
合肥java技術(shù)沙龍No.1
musics
200661880202513.mp3
Others
kaisyamail
小小世界
smallworld 20030512 手機鈴聲下載
小曉日語的G寶盆
我的G寶盤
最新評論
1.?re: IBM WAS簡介
十大US和登記卡時代科技愛好是大號的金卡和登記卡
--武漢市
2.?re: vb.net中dataGridView的單元格的合并
合并的單元格無法選中,如何解決,還有我想在合并的單元個里繪checkbox怎么弄
--ヒツ
3.?re: 批量完成EXCEL表格目錄超鏈接[未登錄]
謝謝!借用了!雖然不知道公式的含義!
--小莫
4.?re: vb.net中dataGridView的單元格的合并
你好,可以寄一份源碼給我嗎?keobo.wang@deltaww.com.cn
--uyfghfv
5.?re: vb.net中dataGridView的單元格的合并
可以寄一份vb.net源碼給我嗎?
ms101690@pchome.com.tw
--Surfing
閱讀排行榜
1.?IBM WAS簡介(35847)
2.?vb.net中dataGridView的單元格的合并(12687)
3.?電腦出現(xiàn)了以下提示不能啟動了"因以下文件的損壞或丟失windosws無法啟動WINDOWS/SYSTEN32/CONFIG/SYSTEM..."(12578)
4.?IT常用日語 (12010)
5.?Eclipse內(nèi)存溢出的解決之道 -vmargs -Xmx512M(11748)
評論排行榜
1.?vb.net中dataGridView的單元格的合并(18)
2.?查找EXCEL的一列中重復(fù)的數(shù)據(jù)(8)
3.?IT常用日語 (4)
4.?批量完成EXCEL表格目錄超鏈接(3)
5.?軟件高手是這樣練成的 —— 座右帖 (感覺太好了,轉(zhuǎn)載過來)(3)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 小言身寸
主站蜘蛛池模板:
亚洲精品中文字幕无码A片老
|
最近2019中文字幕免费看最新
|
亚洲AV无码XXX麻豆艾秋
|
久久久久亚洲Av片无码v
|
免费一级做a爰片性色毛片
|
国产2021精品视频免费播放
|
国产一级一毛免费黄片
|
精品女同一区二区三区免费播放
|
亚洲午夜精品国产电影在线观看
|
亚洲av日韩av无码
|
亚洲永久精品ww47
|
亚洲欧洲一区二区三区
|
宅男666在线永久免费观看
|
成人免费一级毛片在线播放视频
|
久久永久免费人妻精品下载
|
国产午夜无码精品免费看
|
jizz免费观看
|
国产精品九九久久免费视频
|
一级做受视频免费是看美女
|
国产精品亚洲综合网站
|
亚洲精品色在线网站
|
亚洲精品自偷自拍无码
|
亚洲高清国产拍精品熟女
|
亚洲精品无码久久久久APP
|
亚洲啪AV永久无码精品放毛片
|
中文字幕亚洲综合小综合在线
|
亚洲xxxxxx
|
亚洲欧美日韩一区二区三区在线
|
亚洲天堂2017无码中文
|
亚洲精品一二三区
|
亚洲人成色99999在线观看
|
亚洲avav天堂av在线网毛片
|
久久亚洲精品无码gv
|
国产精品亚洲一区二区三区在线观看
|
亚洲AV无码成人精品区狼人影院
|
a免费毛片在线播放
|
四虎影视久久久免费
|
97超高清在线观看免费视频
|
永久免费av无码网站yy
|
久久久久久夜精品精品免费啦
|
最近2018中文字幕免费视频
|