2011-12-22 8 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のコードにバグが発見されました。それを修正し、修正が適用されたらユニットテストが合格することを確認します。 –

答えて

0

私は適切な例外を期待するには、次のメソッドを使用します。

try { 
    doSomethingToProvokeException(); 

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

あなたは例外状態を保持する変数を必要としません。なぜあなたのコードに例外がスローされないのですか?あなたがオブジェクトのソースを提供しない限り、誰もあなたにそれを伝えることはできません。