<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 小言身寸 閱讀(773) 評論(0)  編輯  收藏 所屬分類: JAVA相關技術
    主站蜘蛛池模板: 日本XXX黄区免费看| 中文字幕乱码一区二区免费| 99久久免费国产精品特黄| 亚洲色成人网一二三区| 曰批全过程免费视频播放网站 | 亚洲精品福利网站| 最近新韩国日本免费观看| 亚洲视频一区在线播放| 国产精彩免费视频| 2020天堂在线亚洲精品专区| 午夜一级免费视频| 午夜亚洲乱码伦小说区69堂| 亚洲欧洲一区二区三区| 久久久精品视频免费观看 | 波多野结衣免费在线观看| 亚洲二区在线视频| 国产精品免费视频网站| 香蕉视频免费在线播放| 2048亚洲精品国产| 男人进去女人爽免费视频国产| 久久精品国产亚洲AV香蕉| 免费无码又爽又刺激聊天APP| 亚洲精品乱码久久久久久蜜桃图片| 国产一区二区免费在线| 男女一边桶一边摸一边脱视频免费| 亚洲av女电影网| 最近中文字幕无免费视频| 免费观看四虎精品成人| 亚洲AV乱码久久精品蜜桃| 成年女人免费碰碰视频| 91av免费在线视频| 亚洲一区在线观看视频| 亚洲第一视频在线观看免费| 亚洲精品免费在线观看| 亚洲精品久久无码| 国产精品亚洲一区二区三区在线| 黄页网站在线看免费| 国产福利免费视频 | 国产成人亚洲精品无码AV大片| 亚洲欧洲自拍拍偷午夜色无码| 日本片免费观看一区二区|