Как проверить исключение, выброшенное в Android ContentProvider - PullRequest
1 голос
/ 01 февраля 2011

Я пытаюсь протестировать метод 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 Ответ

1 голос
/ 28 февраля 2011

Не бросай.Вернуть ноль.За Документация ContentResolver.getType () ,

Возвращает MIME-тип для содержимого, или ноль, если URL-адрес недействителен или имеет типнеизвестно

...