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

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

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

    用 ant 自動化測試 (轉)

    利用ant和junit實現單元測試的自動化
     
    在軟件開發過程中,我們通常需要對各個功能模塊以至類的方法進行詳細的測試。這種對最小的軟件單元進行驗證的工作也叫做單元測試,單元測試通常在編碼過程中進行,在以測試驅動開發的項目中,單元測試是一項非常重要的工作,但隨著開發過程的深入,我們所積累的單元測試案例就會越來越多,面對成百上千個測試類,單獨運行每個案例不僅費時,而且很難在以后的集成測試中利用先前的單元測試案例構建出一個完整的測試報告。
    Junit是一個用于java軟件測試的開源項目,主要的應用也是作為單元測試,雖然設計短小,但功能卻是非常強大。目前有很多在junit上進行擴展的項目幫助我們完成各種測試。比如web性能測試的httpunit,jmeter,用于代碼覆蓋測試的hansel,用于數據庫性能測試的dbunit等等,應用遍布軟件測試的各個領域。
        Ant同樣是一個非常優秀的java項目構建工具。據ant的創始人James Duncan Davidson說,ant代表:"Another Neat Tool"。同樣的,ant在英文中是“螞蟻“的意思,這又代表著它有建筑本領高超和身軀雖小,但功能卻極其強大的意思(可以參看:http://ant.apache.org/faq.html#ant-name),ant項目從2000年開始,一直未停止更新工作,目前的最高版本是1.7.0。
    在下面我們還需要用到java的IDE開發工具Eclipse。在最新的3.2版本中,eclipse已經整合了junit4、junit3.8.1和ant1.6.5。但由于只有在ant1.7.0以后版本中才開始支持junit,因此需要我們從http://ant.apache.org下載最新的1.7.0,并重新設置eclipse的Ant Home的位置指向ant1.7.0的lib包。如圖:

    Eclipse里面已經自帶了junit4和junit3.8.1,如果使用的jdk環境是5.0(jdk1.5)可以使用junit4,如果是1.4則使用junit3.8.1。查看和設置項目的jdk環境可以通過project ->properties ->java compiler.如圖:

     
       默認情況下,"Enable project specific settings" 選項是未選中的,則項目使用當前操作系統默認的java環境(跟你設置的java build path無關)。
       下面,我們創建一個測試項目,名字為:test,并創建兩個源文件夾:src和test..把項目源文件和測試文件分開放在這兩個文件夾中。
    我們在src編寫一個測試類:
     
    package com.widetrust;
     
    public class CountService {
         private int summary;
         private int count;
         public boolean stat(int visitor){
        count++;
        summary += visitor;
        if(summary>1000 && count>2){
        return true;
        }else{
            return false;
        }
         }
    }
     
    在test文件夾寫個測試該類的類:
     
    package com.widetrust.test;
     
    import com.widetrust.CountService;
    import junit.framework.TestCase;
     
    public class TestCountService extends TestCase {
        CountService cs;
        protected void setUp() throws Exception {
            cs = new CountService();
        }
     
        protected void tearDown() throws Exception {
        }
        public void testStat(){      
        assertEquals(true, cs.stat(4000));
        }
        public void testStat2(){
        cs.stat(2000);
        cs.stat(2000);
        assertEquals(true, cs.stat(3000));
        }
    }
     
     
    當然我們可以利用eclipse的Run As Junit Test(快捷鍵:Alt+Shift+X T)運行我們剛寫好的測試案例,但有個問題是eclipse不能正確的同步我們的開發和測試程序,而且,我們可能還希望測試的過程中為我們提供一份詳細的報告文檔,以供我們在測試后的改進過程中的討論。現在我們使用ant的自動編譯功能來實現測試的自動化,并讓它生成一份詳細的測試報告。
      注意的是,ant自帶了junit的支持包,但項目需要junit.jar,還需要在項目的lib文件夾中放置junit.jar,(這里我假設工程目錄存放項目依賴組件的是lib文件夾)如果我們要單獨使用ant編譯整個項目,需要在項目構建文件build.xml中定義編譯所用到的lib包。當然,為了省事,我們也可以把項目依賴的lib包放到ant的設置項Global Entries 中,如圖:

     
    這里我們把項目依賴包都設置在build.xml中:
    在項目的根目錄創建一個build.xml,內容如下:
     
    <?xml version="1.0"?>
     
    <project name="ant and junit" default="test auot junit and report" basedir=".">
       
        <!-- 定義工程依賴的jar包存放的位置 -->
        <property name="lib.dir" value="lib"/>
        <path id="classpath">
           <fileset dir="${lib.dir}" includes="**/*.jar"/>
        </path>
     
        <property name="output folder" value="classes"/>
        <property name="src folder" value="src"/>
        <property name="test folder" value="test"/>
        <property name="report folder" value="report"/>
     
        <target name="clean">
           <delete dir="report"/>
           <echo>清除測試報告文件 成功!</echo>
        </target>
     
        <target name="compile init">
           <mkdir dir="${output folder}"/>
           <echo>創建編譯文件夾 成功!</echo>
        </target>
     
        <target name="report init"depends="clean">
           <mkdir dir="${report folder}"/>
           <echo>創建測試報告文件夾 成功!</echo>
        </target>
     
        <target name="compile"depends="compile init">
           <javac srcdir="${src folder}" destdir="${output folder}" classpathref="classpath"/>
           <echo>項目源文件編譯 成功!</echo>
        </target>
     
        <target name="test compile" depends="report init">
           <javac srcdir="${test folder}" destdir="${output folder}" classpathref="classpath"/>
           <echo>項目測試文件編譯 成功!</echo>
        </target>
     
        <target name="all compile" depends="compile, test compile">
        </target>
     
        <target name="test auot junit and report" depends="all compile">
           <junitprint summary="on" fork="true" showoutput="true">
               <classpath>
                  <fileset dir="${lib.dir}"includes="**/*.jar"/>
                  <pathelement path="${output folder}"/>
               </classpath>
               <formatter type="xml"/>
               <batchtest todir="${report folder}">
                  <fileset dir="${output folder}">
                      <include name="**/Test*.*"/>
                  </fileset>
               </batchtest>
           </junit>
           <junitreport todir="${report folder}">
               <filesetdir="${report folder}">
                  <include name="TEST-*.xml"/>
               </fileset>
               <report format="frames" todir="${report folder}"/>
           </junitreport>
        </target>
    </project>
     
     
    我們在eclipse中利用windows -> show View -> Ant 打開ant工作窗口,點擊”Add Buildfiles” 將項目的根目錄下的build.xml添加進去,然后在ant工作窗口點運行圖標,可以看到控制臺上的輸出:(當然,用命令行方式運行也可以)

     
    整個項目編譯成功,并在項目根目錄生成一個report文件夾,我們可以從中看到一份詳細的測試報告:
     

     
    我們可能會希望junit 和ant為我們提供中文的測試報告,很遺憾的是,ant并沒有給我們提供這個選項,還好,ant可以讓我們通過定義styledir屬性,更改報告文件的輸出樣式的配置文件:我們要做的,就是漢化在ant安裝文件夾中的junit-frames.xsl和junit-noframes.xsl,(也可以從http://download.csdn.net/user/lemonfamily 下載到該文件)甚至可以在里面定義一些我們需要的東西。
    (可以參看:http://ant.apache.org/manual/OptionalTasks/junitreport.html
     
    <junitreporttodir="${report folder}">
               <filesetdir="${report folder}">
                  <includename="TEST-*.xml"/>
               </fileset>
               <reportformat="frames"todir="${report folder}"styledir="junitreport"/>
           </junitreport>
     
    這是更改后的效果:
     

     
         現在我們已經可以做到測試代碼和開發代碼分開,并利用ant的自動編譯功能為我們執行測試計劃和生成測試報告。雖然在編寫測試案例的時候確實比較麻煩,我們需要詳細的模擬實際應用中的環境,并尋找可能出現錯誤的邊界值幫助我們在編寫實際代碼時盡量減少隱患的發生,往往編寫測試案例的時間比我們編寫實際代碼的時間還長,但這樣做是非常值得的,一個軟件的開發周期最長的60%都是花在尋找錯誤和完善的過程中。

    posted on 2007-09-03 18:00 leoli 閱讀(2417) 評論(0)  編輯  收藏 所屬分類: test


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案(17)

    文章分類(86)

    收藏夾(3)

    flex blog

    good site

    java blog

    my friend

    tools

    抓蝦

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久亚洲精品无码gv| 亚洲精品国产美女久久久| 亚洲精品偷拍无码不卡av| 97无码人妻福利免费公开在线视频| 狠狠亚洲狠狠欧洲2019| 4hu四虎免费影院www| 久久99亚洲综合精品首页| 在线免费观看h片| 亚洲AV无码成人精品区天堂| 久久久免费的精品| 久久精品国产亚洲AV电影| 五月婷婷在线免费观看| 亚洲乱码在线观看| 又粗又硬又黄又爽的免费视频 | 99久久国产免费-99久久国产免费| 亚洲欧洲成人精品香蕉网| 久久福利青草精品资源站免费| 亚洲AV第一页国产精品| 亚洲啪啪免费视频| 亚洲免费综合色在线视频| 免费中文字幕一级毛片| 三年片在线观看免费西瓜视频| 亚洲黑人嫩小videos| 午夜色a大片在线观看免费| 人成电影网在线观看免费| 久久精品国产亚洲av麻豆| 成人性生免费视频| 窝窝影视午夜看片免费| 久热综合在线亚洲精品| 妞干网手机免费视频| 一边摸一边爽一边叫床免费视频| 久久青青成人亚洲精品| 国产成人免费爽爽爽视频| 一级毛片视频免费观看| 久久亚洲sm情趣捆绑调教| 永久黄网站色视频免费直播| 色多多A级毛片免费看| 亚洲天堂一区二区| 国产真实伦在线视频免费观看| a毛片免费在线观看| 亚洲字幕AV一区二区三区四区|