<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-94  評論-56  文章-3  trackbacks-0
    這一篇講述如何自動運行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 小言身寸 閱讀(780) 評論(0)  編輯  收藏 所屬分類: JAVA相關技術
    主站蜘蛛池模板: 立即播放免费毛片一级| 亚洲1区1区3区4区产品乱码芒果 | 一本一道dvd在线观看免费视频 | 最近免费中文字幕mv在线电影| 亚洲精品午夜无码专区| 一本大道一卡二大卡三卡免费| 亚洲一区二区高清| 国产精品永久免费| 国产成人无码综合亚洲日韩| 国产免费拔擦拔擦8X高清在线人| 亚洲无线码一区二区三区| 中文字幕免费在线视频| 亚洲avav天堂av在线不卡| 免费无码中文字幕A级毛片| 亚洲黄色高清视频| 亚洲视频免费观看| 亚洲欧洲免费无码| 亚洲AV无码成H人在线观看 | 午夜不卡AV免费| 亚洲精品乱码久久久久久久久久久久 | 成人毛片免费播放| 视频一区在线免费观看| 久久亚洲高清综合| 久久精品无码专区免费青青| 亚洲精品国产精品国自产网站| 日韩免费福利视频| 久99久无码精品视频免费播放| 香蕉蕉亚亚洲aav综合| 青草草色A免费观看在线| 婷婷亚洲综合一区二区| 亚洲中文字幕在线观看| 91高清免费国产自产| 亚洲av永久无码精品秋霞电影秋 | 日韩精品免费在线视频| 麻豆狠色伊人亚洲综合网站| 免费一区二区三区四区五区| 在线观看片免费人成视频无码 | 中文字幕在线观看亚洲视频| 免费永久在线观看黄网站| baoyu116.永久免费视频| 亚洲国产最大av|