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

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
單元測試利器JUnit
作者:網絡轉載 發布時間:[ 2013/3/29 14:59:08 ] 推薦標簽:

    再次運行測試。很遺憾,JUnit 運行界面提示我們有兩個測試情況未通過測試(圖4)——當首字母大寫時得到的處理結果與預期的有偏差,造成測試失敗(failure);而當測試對 null 的處理結果時,則直接拋出了異常——測試錯誤(error)。顯然,被測試代碼中并沒有對首字母大寫和 null 這兩種特殊情況進行處理,修改如下:

Java代碼 復制代碼

    //修改后的方法wordFormat4DB  
    /** 
         * 將Java對象名稱(每個單詞的頭字母大寫)按照 
         * 數據庫命名的習慣進行格式化 
         * 格式化后的數據為小寫字母,并且使用下劃線分割命名單詞 
         * 如果參數name為null,則返回null 
         *  
         * 例如:employeeInfo 經過格式化之后變為 employee_info 
         *  
         * @param name Java對象名稱 
         */ 
        public static String wordFormat4DB(String name){  
              
            if(name == null){  
                return null;  
            }  
              
            Pattern p = Pattern.compile("[A-Z]");  
            Matcher m = p.matcher(name);  
            StringBuffer sb = new StringBuffer();  
              
            while(m.find()){  
                if(m.start() != 0)  
                    m.appendReplacement(sb, ("_"+m.group()).toLowerCase());  
            }  
            return m.appendTail(sb).toString().toLowerCase();  
        } 

 圖4 JUnit 運行失敗界面

    JUnit 將測試失敗的情況分為兩種:failure 和 error。Failure 一般由單元測試使用的斷言方法判斷失敗引起,它表示在測試點發現了問題;而 error 則是由代碼異常引起,這是測試目的之外的發現,它可能產生于測試代碼本身的錯誤(測試代碼也是代碼,同樣無法保證完全沒有缺陷),也可能是被測試代碼中的一個隱藏的bug。

請牢記!

    請牢記這一條 JUnit 佳實踐:測試任何可能的錯誤。單元測試不是用來證明您是對的,而是為了證明您沒有錯。
 
    啊哈,再次運行測試,綠條又重現眼前。通過對 WordDealUtil.wordFormat4DB 比較全面的單元測試,現在的代碼已經比較穩定,可以作為 API 的一部分提供給其它模塊使用了。

    不知不覺中我們已經使用 JUnit 漂亮的完成了一次單元測試。可以體會到 JUnit 是多么輕量級,多么簡單,根本不需要花心思去研究,這可以把更多的注意力放在更有意義的事情上——編寫完整全面的單元測試。

JUnit 深入

    當然,JUnit 提供的功能決不僅僅如此簡單,在接下來的內容中,我們會看到 JUnit 中很多有用的特性,掌握它們對您靈活的編寫單元測試代碼非常有幫助。

Fixture

    何謂 Fixture?它是指在執行一個或者多個測試方法時需要的一系列公共資源或者數據,例如測試環境,測試數據等等。在編寫單元測試的過程中,您會發現在大部分的測試方法在進行真正的測試之前都需要做大量的鋪墊——為設計準備 Fixture 而忙碌。這些鋪墊過程占據的代碼往往比真正測試的代碼多得多,而且這個比率隨著測試的復雜程度的增加而遞增。當多個測試方法都需要做同樣的鋪墊時,重復代碼的“壞味道”便在測試代碼中彌漫開來。這股“壞味道”會弄臟您的代碼,還會因為疏忽造成錯誤,應該使用一些手段來根除它。

    JUnit 專門提供了設置公共 Fixture 的方法,同一測試類中的所有測試方法都可以共用它來初始化 Fixture 和注銷 Fixture。和編寫 JUnit 測試方法一樣,公共 Fixture 的設置也很簡單,您只需要:

使用注解 org,junit.Before 修飾用于初始化 Fixture 的方法。
使用注解 org.junit.After 修飾用于注銷 Fixture 的方法。
保證這兩種方法都使用 public void 修飾,而且不能帶有任何參數。
遵循上面的三條原則,編寫出的代碼大體是這個樣子:

引用
//初始化Fixture方法
@Before public void init(){……}

//注銷Fixture方法
@After public void destroy(){……}

 

    這樣,在每一個測試方法執行之前,JUnit 會保證 init 方法已經提前初始化測試環境,而當此測試方法執行完畢之后,JUnit 又會調用 destroy 方法注銷測試環境。注意是每一個測試方法的執行都會觸發對公共 Fixture 的設置,也是說使用注解 Before 或者 After 修飾的公共 Fixture 設置方法是方法級別的(圖5)。這樣便可以保證各個獨立的測試之間互不干擾,以免其它測試代碼修改測試環境或者測試數據影響到其它測試代碼的準確性。

圖5 方法級別 Fixture 執行示意圖

上一頁123456下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 国产免费爽爽视频免费可以看 | 美女很黄很黄 | 欧美日韩一区二区中文字幕视频 | 天天色天天射综合网 | 亚洲国产欧美在线观看 | 亚洲成人91 | 天天射天天添 | 黄色片一级免费看 | 日韩欧美亚洲一区二区综合 | 国产高清不卡视频 | 一级做a爱片特黄在线观看yy | 亚洲欧美日韩中文字幕在线不卡 | 成人福利 | 中文字幕在线播放视频 | 午夜在线精品不卡国产 | 欧美成人亚洲国产精品 | 狠狠色狠狠色综合人人 | 女性一级全黄生活片在线播放 | 欧美一级手机免费观看片 | 手机在线免费观看毛片 | 在线观看精品视频一区二区三区 | 九九成人免费视频 | 欧美视频第一区 | 国产高清专区 | 农村寡妇一级毛片免费播放 | 成人a级高清视频在线观看 成人a大片在线观看 | 日本漫画工囗全彩内番怀孕 | 欧美中文字幕 | 欧美日韩第一区 | 一个人晚上在线观看的免费视频 | 日日干视频 | 亚洲成人bt | 久久久久88色偷偷 | 久在线| 精品国产免费人成高清 | 又色又爽又黄的视频女女高清 | 福利综合网| 亚洲午夜精品在线 | 国产精品久久久久久亚洲伦理 | 天天怕夜夜怕狠狠怕 | 欧美性猛交一区二区三区精品 |