【问题标题】:Exception Handling In Android Unit Test CaseAndroid单元测试用例中的异常处理
【发布时间】:2011-12-22 06:30:59
【问题描述】:

我正在执行 Android 单元测试用例,对于负测试用例我应该得到异常,但对于某些 API 的异常没有被捕获。

请务必找到以下示例:

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); 应该抛出异常。但它不会被抛出。

请指导我哪里错了。

【问题讨论】:

  • 那么,方法应该会抛出异常,而单元测试显示不是这样,是吗?如果是这样,那么恭喜:由于您的单元测试,您刚刚在 DBSms 的代码中发现了一个错误。修复它并在应用修复后检查单元测试是否通过。

标签: java android unit-testing exception-handling junit


【解决方案1】:

我使用以下方法来期待正确的异常:

try {
   doSomethingToProvokeException();

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

您不需要变量来保持异常状态。至于为什么您的代码中没有抛出异常 - 除非您提供对象来源,否则没有人可以告诉您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    相关资源
    最近更新 更多