【问题标题】:How to test exception thrown in Android ContentProvider如何测试 Android ContentProvider 中抛出的异常
【发布时间】:2011-02-01 18:13:29
【问题描述】:

我正在尝试测试我的 contentprovider 的 getType 方法,尤其是在传入无效 uri 时。目前我抛出 IllegalArgumentException,但在我的测试中没有发现异常。

这是我的测试

public void testIllegalArgumentExceptionThrownForInvalidUri() {
    Uri badUri = Uri.parse("content://" + NoteProvider.AUTHORITY  + "/somethingelse");

    try {
        String type = mockResolver.getType(badUri);
        fail("No exception thrown");
    } catch (Exception ex) {
        assertEquals(IllegalArgumentException.class, ex.getCause().getClass());
    }
}

以及getType的实现

@Override
public String getType(Uri uri) {
    switch (uriMatcher.match(uri)) {
        case URI_NOTES:
            return Notes.CONTENT_TYPE;
        case URI_NOTE_ID:
            return Notes.CONTENT_ITEM_TYPE;
        default:
            throw new IllegalArgumentException("Unknown URI " + uri);
    }
}

我已经通过它并且可以看到抛出了异常,但是在测试中调用的是 fail() 方法而不是 catch 块。

MockContentResolver 会吞下异常吗?

免责声明:我是 android 和 java 的新手,虽然我已经用 C# 编码好几年了,所以我可能在做一些完全愚蠢的事情。 :D

【问题讨论】:

    标签: java android android-contentprovider


    【解决方案1】:

    不要扔。返回空值。每ContentResolver.getType()'s documentation

    返回内容的 MIME 类型,如果 URL 无效或类型未知,则返回 null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2020-08-18
      • 2014-05-10
      • 2021-02-26
      • 1970-01-01
      • 2018-09-11
      • 2021-11-09
      相关资源
      最近更新 更多