繁体   English   中英

如何测试Android ContentProvider中引发的异常

[英]How to test exception thrown in 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是否吞下异常?

免责声明:尽管已经使用C#编写代码已有很多年了,但我对android和java还是陌生的,所以我可能做的事情完全是愚蠢的。 :D

不要丢。 返回空值。 根据ContentResolver.getType()的文档

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM