亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
利用Ant和JUnit進行增量開發
作者:網絡轉載 發布時間:[ 2013/1/31 13:59:12 ] 推薦標簽:

  下一步,我們要創建配置文件。清單 4 顯示了一個 Ant 構建文件示例。構建文件中的關鍵是名為 runtests 的目標。這個目標進行分支判斷并運行外部程序,其中外部程序是前面已安裝的 junit.textui.TestRunner 。我們指定要使用語句 test.com.company.AllJUnitTests 來運行哪個測試套件。
  清單 4. 構建文件示例
<property name="app.name" value="sample" /> <property name="build.dir" value="build/classes" /> <target name="JUNIT"> <available property="junit.present" classname="junit.framework.TestCase" /> </target> <target name="compile" depends="JUNIT"> <mkdir dir="${build.dir}"/> <javac srcdir="src/main/" destdir="${build.dir}" > <include name="**/*.java"/> </javac> </target> <target name="jar" depends="compile"> <mkdir dir="build/lib"/> <jar jarfile="build/lib/${app.name}.jar" basedir="${build.dir}" includes="com/**"/> </target> <target name="compiletests" depends="jar"> <mkdir dir="build/testcases"/> <javac srcdir="src/test" destdir="build/testcases"> <classpath> <pathelement location="build/lib/${app.name}.jar" /> <pathelement path="" /> </classpath> <include name="**/*.java"/> </javac> </target> <target name="runtests" depends="compiletests" if="junit.present"> <java fork="yes" classname="junit.textui.TestRunner" taskname="junit" failonerror="true"> <arg value="test.com.company.AllJUnitTests"/> <classpath> <pathelement location="build/lib/${app.name}.jar" /> <pathelement location="build/testcases" /> <pathelement path="" /> <pathelement path="${java.class.path}" /> </classpath> </java> </target> </project>

  運行 Ant 構建示例

  開發過程中的下一步是運行將創建和測試 HelloWorld 類的構建。清單 5 顯示了構建的結果,其中包括了各個目標部分?岬哪遣糠质 runtests 輸出語句:它告訴我們整個測試套件都正確運行了。

  我在圖 4 和圖 5 中顯示了 JUnit GUI,其中所要做的是將 runtest 目標從 junit.textui.TestRunner 改為 junit.ui.TestRunner 。當您使用 JUnit 的 GUI 部分時,您必須選擇退出按鈕來繼續構建過程。如果使用 Junit GUI 構建包,那么它將更難與大型的構建過程相集成。另外,文本輸出也與構建過程更一致,并可以定向輸出到一個用于主構建記錄的文本文件。這對于每天晚上都要進行的構建非常合適。
  清單 5. 構建輸出示例
E:projectssample>ant runtests Searching for build.xml ... Buildfile: E:projectssampleuild.xml JUNIT: compile: [mkdir] Created dir: E:projectssampleuildclasses [javac] Compiling 1 source file to E:projectssampleuildclasses jar: [mkdir] Created dir: E:projectssampleuildlib [jar] Building jar: E:projectssampleuildlibsample.jar compiletests: [mkdir] Created dir: E:projectssampleuild estcases [javac] Compiling 3 source files to E:projectssampleuild estcases runtests: [junit] .. [junit] Time: 0.031 [junit] [junit] OK (2 tests) [junit] BUILD SUCCESSFUL Total time: 1 second

圖 4. JUnit GUI 測試成功

圖 5. JUnit GUI 測試失敗

  了解測試的工作原理
  讓我們搞點破壞,然后看看會發生什么事。夜深了,我們決定把 "Hello World" 變成一個靜態字符串。在更改期間,我們 不小心 打錯了字母,將 "o" 變成了 "0",如清單 6 所示。

  清單 6. Hello world 類更改
package com.company; public class HelloWorld { private final static String HELLO_WORLD = "Hell0 World"; public String sayHello() { return HELLO_WORLD; } }

在構建包時,我們看到了錯誤。清單 7 顯示了 runtest 中的錯誤。它顯示了失敗的測試類和測試方法,并說明了為什么會失敗。我們返回到代碼中,改正錯誤后離開。
清單 7. 構建錯誤示例
E:projectssample>ant runtests Searching for build.xml ... Buildfile: E:projectssampleuild.xml JUNIT: compile: jar: compiletests: runtests: [junit] ..F [junit] Time: 0 [junit] [junit] FAILURES!!! [junit] Test Results: [junit] Run: 2 Failures: 1 Errors: 0 [junit] There was 1 failure: [junit] 1) testSayHello(test.com.company.HelloWorldTest) "expected:<Hello World> but was:<Hell0 World>" [junit] BUILD FAILED E:projectssampleuild.xml:35: Java returned: -1 Total time: 0 seconds

  并非完全無痛
  新的過程并不是完全無痛的。為使單元測試成為開發的一部分,您必須采取以下幾個步驟:

    下載和安裝 JUnit。
    下載和安裝 Ant。
    為構建創建單獨的結構。
    實現與主類分開的測試類。
    學習 Ant 構建過程。

  但好處遠遠超過了痛苦。通過使單元測試成為開發過程的一部分,您可以:

    自動驗證以捕捉更改“臭蟲”
    從接口角度設計類
    提供干凈的示例
    在發行包中避免代碼混亂和類膨脹。

  實現 24x7
  保證產品的質量要花費很多錢,但如果質量有缺陷,花費的錢更多。如何才能使所花的錢獲得大價值,來保證產品質量呢?

    評審設計和代碼。 評審可以達到的效果是單純測試的一半。
    通過單元測試來確認模塊可以使用。 盡管測試早存在,但隨著開發實踐的不斷發展,單元測試逐漸成為日常開發過程的一個部分。

  在我 10 年的開發生涯里,為 emageon.com 工作是重要的部分之一。在 emageon.com 時,設計評審、代碼評審和單元測試是每天都要做的事。這種日常開發習慣造了高質量的產品。軟件在客戶地點第一年的當機次數為零,是一個真正的 24x7 產品。單元測試象刷牙:您不一定要做,但如果做了,生活質量更好。

  參考資料

    您可以參閱本文在 developerWorks 全球站點上的 英文原 .

    下載在本文中引用的 示例代碼 。

    從 Apache網站下載 Ant。如需 Ant 文檔、FAQ 和其他下載,請訪問 Jakarta 項目的Ant 主頁 。

    JUnit 主頁 提供了額外的測試示例、文檔、文章和 FAQ。您可以從 www.xprogramming.com下載 JUnit 3.2。

    Kent Beck 所寫的 “簡單的 Smalltalk 測試”(Simple Smalltalk Testing) 討論了一個簡單的測試策略和支持它的框架。

    請參閱其它開發者的有關單元測試的評論 (comments on unit testing) 。

    要了解其它有用的開發習慣,請訪問 編程主頁 (Extreme Programming Home page) 。

  關于作者
  Malcolm G. Davis 擁有自己的咨詢公司,并任公司的總裁,該公司位于美國阿拉巴馬州的伯明翰 (Birmingham)。他把自己看做是個 Java 傳道者。在工作之余,他喜歡跑步,以及和他的孩子們一起玩耍。您可以通過 malcolm@nuearth.com與 Malcolm 聯系。

上一頁123下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 久久人人爽人人爽人人爽 | 国产片一级毛片视频 | 欧美日本视频一区 | 九九热亚洲精品综合视频 | 人人爽人人爽人人片c | 成人a毛片久久免费播放 | 美女秘密视频白丝 | 天堂色视频 | 天天射天天舔 | 国产日韩欧美久久久 | 久久久亚洲国产精品主播 | 一级黄色在线观看 | 最近高清无吗免费看 | 二级特黄绝大片免费视频大片 | 亚洲成人91| 亚洲综合久久综合激情久久 | 国产91香蕉视频 | 福利毛片 | 一级性片 | 亚洲综合在线观看一区www | 午夜久久网 | 999国内精品视频免费 | 久久天天躁狠狠躁夜夜躁综合 | 中国一级做a爱片免费 | 成人精品国产亚洲 | 小明tv| 午夜96影视 | 色婷五月综激情亚洲综合 | 日韩国产中文字幕 | 妞干网在线观看 | 日韩免费毛片全部不收费 | 永久免费看毛片 | 伊人网站 | 亚洲欧美视频 | 久久天堂夜夜一本婷婷麻豆 | 成人爱做日本视频免费 | 国产日韩在线看 | 噜噜噜噜精品视频在线观看 | 亚洲免费看片 | 国产成人18黄禁网站免费观看 | 成人一a毛片免费视频 |