xiekai-blog
北冥有魚,其名為鯤。鯤之大,不知其幾千里也。化而為鳥,其名為鵬。鵬之背,不知其幾千里也。怒而飛,其翼若垂天之云。是鳥也,海運則將徙于南冥。南冥者,天池也。
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-94 評論-56 文章-3 trackbacks-0
用Ant構建Java項目(續)
這一篇講述如何自動運行JUnit測試進行自動化測試。我們將JUnit測試放在test目錄。
第一步:編譯測試
首先,在build.xml文件里定義一個單獨的構建目標,以便編譯測試源文件。
?
<target name="compile-tests" depends="compile">
??? <javac srcdir="${test.dir}" destdir="${build.test.dir}">
????? <classpath refid="project.classpath" />
??? </javac>
? </target>
compile-tests目標用<javac>任務在test.dir目錄編譯測試源文件,并將結果類文件放入build.test.dir目錄,用project.classpath路徑作為測試代碼的類路徑。
第二步:運行測試
在build.xml文件里定義構建目標,使所有的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目標的depends屬性生成與剛定義的compile-tests目標的依存關系。
如果構建成功,意味著所有的東西不僅都編譯過,還都通過了測試。
將haltonfailure屬性設為true會使構建隨著任何測試失敗而失敗。
這里我們再次用project.classpath定義了運行JUnit測試的類路徑。
下面定義了一個輸出格式化器,在<formatter> 元素中,使用brief類型來輸出每個運行的測試用例的名稱及其統計信息,僅當測試失敗時才有更詳細的信息(plain類型默認比brief類型輸出信息多一些;xml類型將測試結果以XML格式輸出)。將usefile屬性值設為false會將測試結果送往控制臺,而不是寫入文件。
<batchtest>任務收集從封閉<fileset>元素中返回的所有測試,并自動創建包含了所有測試的測試suite。我們將對所有的測試類用*Test.java命名約定取名,這些文件將編譯成*Test.class文件,放在<fileset>的build.test.dir性質指向的目錄中。
最后,<sysproperty>元素定義系統性質為一個鍵值對,這些性質可以在測試代碼中訪問。這里,測試需要知道從哪里找到文檔,以及向哪里放入文檔的索引結果,在運行測試時我們將傳遞這些結果,例如,測試在運行時查看送入的doc.dir系統性質來定位項目目錄結構中doc目錄的絕對路徑。
要運行測試,請執行test目標:
$?ant test
最后,打掃戰場
我們可以定義一個刪除所有構建輸出的Ant目標。
?
<target name="clean">
??? <delete dir="${build.dir}" />
? </target>
clean目標使用<delete>任務來刪除build.dir所指的目錄。要刪除目錄,請運行clean目標:
$ ant clean
沖掉這些構建輸出有積極的作用:從頭開始生成構建,可以發現可能被累積構建掩蓋的錯誤。
完整的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
>
下面再舉一個實際項目中用到的構建文件的例子:
<?
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
>
???
也許你已經看出來了,這就是〈〈jsp2.0技術手冊〉〉里面的build.xml文件啦!
posted on 2006-08-31 11:42
小言身寸
閱讀(773)
評論(0)
編輯
收藏
所屬分類:
JAVA相關技術
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Java學習從入門到精通的學習方法 (轉)
利用MAP進行排序
Weblogic遠程重啟動命令
取得最小開始日期,JAVA中Set和Iterator的使用一例
WebLogic 如何設置session超時時間
RiA:Rich Internet Application(C/B/S架構)
用Ant構建Java項目(續)
用Ant構建Java項目
TOMCAT創建和發布WEB應用(TOMCAT與Java Web開發技術詳解 第二章 閱讀筆記)
java中連接Oracle數據源
<%--
共有人在同時閱讀此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 開發(3)
eclipse plugin(3)
Eclipse/MyEclipse(4)
javascript(2)
JAVA相關技術(17)
UML(1)
應用服務器(4)
數據庫/SQL語言(11)
日本見聞(2)
日語相關(24)
軟件應用(11)
軟件測試(2)
雷人語錄
電子商務?物流(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
得益網
Favorite Blog
ErixHao的專欄_模式深度思考
loveyeah
lzgsl的博客_IT日本語
千山鳥飛絕
外語學習資源
島田九美子
謙卑自牧,寬于待人_weblogic
Friend's Blog
jyuan-blog
一中的同學們
合肥java技術沙龍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.?電腦出現了以下提示不能啟動了"因以下文件的損壞或丟失windosws無法啟動WINDOWS/SYSTEN32/CONFIG/SYSTEM..."(12579)
4.?IT常用日語 (12010)
5.?Eclipse內存溢出的解決之道 -vmargs -Xmx512M(11748)
評論排行榜
1.?vb.net中dataGridView的單元格的合并(18)
2.?查找EXCEL的一列中重復的數據(8)
3.?IT常用日語 (4)
4.?批量完成EXCEL表格目錄超鏈接(3)
5.?軟件高手是這樣練成的 —— 座右帖 (感覺太好了,轉載過來)(3)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 小言身寸
主站蜘蛛池模板:
日本XXX黄区免费看
|
中文字幕乱码一区二区免费
|
99久久免费国产精品特黄
|
亚洲色成人网一二三区
|
曰批全过程免费视频播放网站
|
亚洲精品福利网站
|
最近新韩国日本免费观看
|
亚洲视频一区在线播放
|
国产精彩免费视频
|
2020天堂在线亚洲精品专区
|
午夜一级免费视频
|
午夜亚洲乱码伦小说区69堂
|
亚洲欧洲一区二区三区
|
久久久精品视频免费观看
|
波多野结衣免费在线观看
|
亚洲二区在线视频
|
国产精品免费视频网站
|
香蕉视频免费在线播放
|
2048亚洲精品国产
|
男人进去女人爽免费视频国产
|
久久精品国产亚洲AV香蕉
|
免费无码又爽又刺激聊天APP
|
亚洲精品乱码久久久久久蜜桃图片
|
国产一区二区免费在线
|
男女一边桶一边摸一边脱视频免费
|
亚洲av女电影网
|
最近中文字幕无免费视频
|
免费观看四虎精品成人
|
亚洲AV乱码久久精品蜜桃
|
成年女人免费碰碰视频
|
91av免费在线视频
|
亚洲一区在线观看视频
|
亚洲第一视频在线观看免费
|
亚洲精品免费在线观看
|
亚洲精品久久无码
|
国产精品亚洲一区二区三区在线
|
黄页网站在线看免费
|
国产福利免费视频
|
国产成人亚洲精品无码AV大片
|
亚洲欧洲自拍拍偷午夜色无码
|
日本片免费观看一区二区
|