<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文件里定義一個單獨的構(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ù)
    主站蜘蛛池模板: 亚洲精品中文字幕无码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中文字幕免费视频|