二、編寫ant文件自動(dòng)運(yùn)行java單元測(cè)試
三、修改build.xml文件添加clover任務(wù)
現(xiàn)在我們開(kāi)始修改build.xml文件,添加clover任務(wù),以實(shí)現(xiàn)junit測(cè)試覆蓋率的分析。首先,我們添加clover任務(wù)的配置任務(wù);在build.xml文件里添加如下代碼:
這兩行定義了能夠在ant文件里使用clover任務(wù)的配置工作。然后再添加一個(gè)clover任務(wù),用來(lái)啟動(dòng)clover構(gòu)建任務(wù):
這里的initString定義了clover覆蓋數(shù)據(jù)庫(kù)的信息,它會(huì)在執(zhí)行clover任務(wù)時(shí)自動(dòng)創(chuàng)建,里邊保存了源路徑執(zhí)行測(cè)試任務(wù)時(shí)候的全部信息,clover通過(guò)這個(gè)demo_coverage.db來(lái)創(chuàng)建覆蓋率分析報(bào)告。如果這個(gè)demo_coverage.db存在,clover在每次運(yùn)行時(shí)自動(dòng)覆蓋,如果不存在,clover自動(dòng)創(chuàng)建它。
我們這里使用clover,是為了搜集junit測(cè)試時(shí)候的覆蓋率信息,所以呢,junit測(cè)試過(guò)程中,我們需要使用clover.jar包,所以我們還需要把clover.jar文件作為junit運(yùn)行的依賴庫(kù),因此修改build.classpath代碼成如下所示:
這里順便我們也把path的值說(shuō)明一下,省得有人不懂哦!這里的ant.home是在計(jì)算機(jī)里創(chuàng)建的環(huán)境變量ANT_HOME,它的值應(yīng)該是你的ant的安裝路徑,例如c:ant,所以前兩行代碼的意思,是把c:antlibclover.jar和c:antlibjunit.jar作為依賴庫(kù)。當(dāng)然,事先你一定要拷貝這兩個(gè)jar文件到你的lib目錄。
好了,我們現(xiàn)在開(kāi)始重新使用clover任務(wù)來(lái)運(yùn)行junit測(cè)試!
C:cloversincky>ant clean
Buildfile: build.xml
clean:
[delete] Deleting directory C:cloversinckybuild
BUILD SUCCESSFUL
Total time: 0 seconds
C:cloversincky>ant clover compile
Buildfile: build.xml
clover:
[clover-setup] Clover Version 1.3.8, built on May 18 2005
[clover-setup] loaded from: C:cloverlibclover.jar
[clover-setup] 30 day Evaluation License registered to sinckyzhang@163.com
[clover-setup] You have 10 day(s) before your Evaluation License expires.
[clover-setup] Clover is enabled with initstring 'C:cloversinckydemo_coverage.db'
compile:
[mkdir] Created dir: C:cloversinckybuild
[javac] Compiling 4 source files to C:cloversinckybuild
[clover] Clover Version 1.3.8, built on May 18 2005
[clover] loaded from: C:cloverlibclover.jar
[clover] 30 day Evaluation License registered to sinckyzhang@163.com
[clover] You have 10 day(s) before your Evaluation License expires.
[clover] No coverage database 'C:cloversinckydemo_coverage.db' fou
nd. Creating a fresh one.
[clover] Clover all over. Instrumented 4 files.
BUILD SUCCESSFUL
Total time: 2 seconds
我們會(huì)發(fā)現(xiàn)在sincky目錄下多了一個(gè)demo_coverage.db文件;之后我們?cè)賵?zhí)行測(cè)試任務(wù):
C:cloversincky>ant test
Buildfile: build.xml
test:
[java] ......................
[java] Time: 0
[java] OK (22 tests)
BUILD SUCCESSFUL
Total time: 0 seconds
我們會(huì)看到又多了一個(gè)關(guān)于junit測(cè)試的.db文件!現(xiàn)在,我們已經(jīng)使用clover統(tǒng)計(jì)完了覆蓋率信息,之后創(chuàng)建clover報(bào)告,以直觀方式來(lái)查看具體的覆蓋率結(jié)果!這個(gè)任務(wù)需要在build.xml里創(chuàng)建任務(wù)。Clover的報(bào)告有多種方式:html、pdf、xml以及swingview的圖形化報(bào)告,當(dāng)然與eclipse等java的IDE集成,也會(huì)在IDE里創(chuàng)建報(bào)告;這里我們只演示html類型的報(bào)告!我們修改build.xml文件,添加如下任務(wù):
這里的元素指產(chǎn)生的報(bào)告類型是當(dāng)前的測(cè)試報(bào)告,還有歷史報(bào)告,我們?cè)诤筮呏v解!這個(gè)報(bào)告是html格式,創(chuàng)建后的報(bào)告放在一個(gè)叫做clover_html的文件夾里,報(bào)告標(biāo)題叫做Clover demo。