如何测试Android ContentProvider中引发的异常
问题描述:
我想测试我的contentprovider的getType方法,特别是当传入无效的uri时。目前我抛出IllegalArgumentException,但在我的测试中没有发现异常。如何测试Android ContentProvider中引发的异常
这里是我的测试
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());
}
}
和
@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);
}
}
我已经通过它加强,可以看到,抛出异常的getType的实施,但在测试中失败()方法被调用而不是catch块。
MockContentResolver是否吞下异常?
声明:我是新来的android和java,虽然已经在C#编码了好几年了,所以我可能会做一些完全愚蠢的事情。 :D