如何测试Android ContentProvider中抛出的异常

时间:2011-02-01 18:13:30

标签: java android android-contentprovider

我正在尝试测试我的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

1 个答案:

答案 0 :(得分:1)

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

返回内容的MIME类型;如果网址无效或类型未知,则为null