• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 單元測試假成功和假失敗的避免方法

    發表于:2008-04-29來源:作者:點擊數: 標簽:單元測試
    1 基本信息 摘要:描述了單元測試要避免的幾個問題,并給出幾個最佳實踐建議。 2 假成功的單元測試 1. 問題描述: 在testXXX方法中,看到有這樣的測試代碼: public void testInvoke(){ try{ … assertEquals(a,b); } catch(Exception e){ … } } 2. 問題分
     1 基本信息

      摘要:描述了單元測試要避免的幾個問題,并給出幾個最佳實踐建議。

      2 假成功的單元測試

      1. 問題描述:

      在testXXX方法中,看到有這樣的測試代碼:

    public void testInvoke(){
    try{

    assertEquals(a,b);
    }
    catch(Exception e){

    }
    }

      2. 問題分析:

      如果運行過程中沒有出現異常,整個流程不會有任何問題,JUnit也認為整個測試正常通過。

      但是一旦try中的某段代碼運行出錯,我們會發現由于在assertEquals被調用之前就已經跳到catch中,所以assertEquals并沒有被執行,而catch及之后的代碼中并沒有相應的assertEquals語句,因此JUnit認為這個testXXX方法對應的測試用例正常通過,我們被結果欺騙了。

      3. 解決方法:

      將assertEquals語句移道try…catch之外,變成如下的代碼樣式:

    public void testInvoke(){
    Object a;
    Object b;
    try{

    // assertEquals(a,b);
    }
    catch(Exception e){

    }
    assertEquals(a,b);
    }

      3 假失敗的單元測試

      有的時候被測試方法在申明的時候有throws語句,那么單元測試代碼應該小心處理這個問題.

      如果測試方法直接throws被測試方法所扔出的異常,則在被測試方法扔出這個異常的時候,該單元測試被認為是失??;但是作為被測試方法來講,扔出該異??赡苁钦5奶幚磉壿?,而不能被認定是代碼有錯誤。稱這種情況為“假失敗”的單元測試。

      4 最佳實踐

      單元測試最好不要有try/catch這些內容,這些內容應該是正式代碼中處理的。

      單元測試只要在故意測試異常時才應該用到try/catch,如需要在某個環境下是否拋出某個異常;而其它情況try/catch應該避免使用。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>