2011-12-22 54 views
0

我在做Android單元測試用例執行和負面測試用例我應該得到異常,但是對於某些API的異常沒有被捕獲。在Android單元測試用例中的異常處理

請不要找下面的例子:

public void testInsertSenderType_n() { 
     DBSms obj = new DBSms(getContext()); 
     obj.open(); 

     int i =0; 
     int a =0; 
     boolean result = true; 

     i=obj.GetToatlCount(); 
     obj.insertSmsText(i+1,"Hello to testInsertSenderType_n"); 
     a=obj.TotalcountSms("Inbox"); 
     try 
     { 
      obj.insertSenderType(-100, "Richard", "Inbox", 0); 
     } 
     catch (Exception e) 
     { 
      // TODO: handle exception 
      result = false; 


    } 
     assertEquals(a,obj.TotalcountSms("Inbox")); 
     assertEquals(false,result); 
     obj.close(); 
    } 

在這裏,obj.insertSenderType(-100, "Richard", "Inbox", 0);應該拋出一個異常。但它並沒有拋出。

請指導我在哪裏可以是錯誤的。

+0

因此,該方法應該拋出一個異常,並且單元測試表明它不是這種情況,對嗎?如果是這樣,恭喜你:你剛剛在單元測試中發現了DBSms代碼中的一個錯誤。修復它並檢查一旦應用了修復程序,單元測試就會通過。 – 2011-12-22 07:46:35

回答

0

我用下面的方法來期待適當的異常:

try { 
    doSomethingToProvokeException(); 

    fail("there ought to be an exception dude, but was not"); 
} catch(ExeptionIHaveProvoked ex) { 
    doAssertionnsonThrowsException 
} 

你不需要變量來保持異常狀態。至於爲什麼沒有在你的代碼中拋出異常 - 除非你提供對象的來源,否則沒有人不能告訴你。