您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > Cactus
ant+cactus+tomcat5.5容器內(nèi)單元測試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/12/18 10:48:55 ] 推薦標簽:

一、下載并解壓縮cactus
    下載地址為http://java.chinaitlab.com/tools/45970.html。將cactus的lib目錄下的cactus-ant-1.7.1.jar復(fù)制到ant的lib目錄。

二、配置cactus
    cactus的配置很簡單,新建一個cactus.properties文件,并把它放在ant腳本中的cactus任務(wù)的classpath下,文件中包括如下內(nèi)容

cactus.sysproperties=cactus.contextURL #cactus-sample-servlet-cactified是你的測試應(yīng)用所在路徑,8080是端口號 cactus.contextURL=http://localhost:8080/cactus-sample-servlet-cactifiedcactus.servletRedirectorName=ServletRedirector cactus.jspRedirectorName=JspRedirector cactus.filterRedirectorName=FilterRedirector

    具體的做法結(jié)合ant腳本再進一步解釋。

三、運行ant腳本

  ant腳本主要執(zhí)行以下任務(wù)

1、設(shè)定classpath

<path id="project.classpath"><fileset dir="${lib.dir}"><include name="*.jar"/></fileset><!--cactus.properties文件需要放在lib.dir所對應(yīng)的路徑中--><pathelement location="${lib.dir}"/><pathelement location="${tomcat.home}/common/lib/jsp-api.jar"/><pathelement location="${tomcat.home}/common/lib/servlet-api.jar"/></path>

2、定義相關(guān)任務(wù)

<taskdef resource="cactus.tasks"classpathref="project.classpath"/><taskdef name="runservertests"classname="org.apache.cactus.integration.ant.
RunServerTestsTask"><classpath><path refid="project.classpath"/></classpath></taskdef>

3、編譯應(yīng)用的類文件和測試的類文件

4、打包整個應(yīng)用為war文件

    需要注意的是,不僅要打包應(yīng)用類,測試類也要打包

<target name="war"depends="compile.java"description="Generate the runtime war"><war warfile="${target.dir}/${project.name}.war"webxml="${src.webapp.dir}/WEB-INF/web.xml"><fileset dir="${src.webapp.dir}"><exclude name="cactus-report.xsl"/><exclude name="WEB-INF/cactus-web.xml"/><exclude name="WEB-INF/web.xml"/></fileset><classes dir="${target.classes.java.dir}"/><!--別忘了打包測試類--><classes dir="${target.classes.test.dir}"/><!--別忘了打包各種相關(guān)的jar文件--><lib dir="project.classpath"/></war></target>


5、在應(yīng)用的web.xml文件中添加測試所需的各種映射

    cactus提供了兩個task來完成這個工作,CactifyWar和WebXmlMerge。
    CactifyWar的功能是自動在已經(jīng)打包的應(yīng)用的web.xml文件中添加所需的映射。WebXmlMerge是提供合并兩個web.xml文件的功能。

<target name="test.prepare"depends="war, compile.cactus, test.prepare.logging"><!--Cactify the web-app archive--><cactifywar srcfile="${target.dir}/${project.name}.war"destfile="${tomcat.home}/webapps/${project.name}-cactified.war"><classes dir="${target.classes.java.dir}"/><classes dir="${target.classes.test.dir}"/><lib dir="project.classpath"/></cactifywar></target>

6、運行測試
    cactus提供了cactus和RunServerTests兩個task來運行測試。

    "cactus" task是通過復(fù)制容器服務(wù)器的小文件并運行來運行測試,因此需要制定容器服務(wù)器的類型,啟動速度稍快點,另外配置比較方便,但是無法測試象tomcat連接池等資源。另外對tomcat5.5的支持也不好。

    "RunServerTests"是通過直接啟動容器服務(wù)起來運行測試,因此速度稍慢,且配置較麻煩,但能測試各種資源。

<target name="test"depends="test.prepare"description="Run tests on Tomcat"><!--Start the servlet engine, waitforit to be started, run the unit tests, stop the servlet engine, waitforit to be stopped. The servlet engineisstoppedifthe tests failforany reason--><!--8080是服務(wù)器的端口號,${project.name}-cactified是項目的路徑,和上一步的cactifywar 的destfile相對應(yīng)--><runservertests testURL="http://localhost:8080/${project.name}-cactified/ServletRedirector?Cactus_Service=RUN_TEST"startTarget="_StartTomcat"stopTarget="_StopTomcat"testTarget="_Test"/></target>


<!--_Test是一個普通的junit任務(wù)--><target name="_Test"><junit printsummary="yes"fork="yes"><classpath><path refid="project.classpath"/><pathelement location="${target.classes.java.dir}"/><pathelement location="${target.classes.test.dir}"/></classpath><formatter type="brief"usefile="false"/><formatter type="xml"/><batchtest><fileset dir="${src.test.dir}"><!--Due to some Cactus synchronization bug, the'unit'tests need
to run before the'sample'tests--><include name="**/Test*.java"/><exclude name="**/Test*All.java"/></fileset></batchtest></junit></target>

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd