我正在Android应用中编写单元测试来测试ContentProvider。此测试扩展了ProviderTestCase2。我有以下代码:
// Tests the MIME type for the recent_searches table URI.
String mimeType = mMockResolver.getType(SearchEntryProvider.CONTENT_URI);
assertEquals(SearchEntryProvider.CONTENT_TYPE, mimeType);
模拟的ContentResolver将SearchEntryProvider.CONTENT_URI的值视为: url = {android.net.Uri$StringUri@831696969096}" content://com.eazyigz.provider.RussiaMediaSearch/searches"
问题是这个assertEquals失败了,因为它期望CONTENT_TYPE为
vnd.android.cursor.dir
但是收到
vnd.android.cursor.item
对于我的生活,我无法弄清楚如何让mimeType成为 vnd.android.cursor.dir 。有人有这方面的经验吗?
谢谢, 伊戈尔
答案 0 :(得分:0)
对于任何感兴趣的人,问题出在我的ContentProvider的 getType 方法的实现中。我必须像这样实现它以返回正确的 CONTENT_TYPE :
@Override
public String getType(Uri uri) {
final int match = sUriMatcher.match(uri);
switch (match) {
// If the pattern is for searches, returns the general content type.
case SEARCHES:
return CONTENT_TYPE;
case SEARCH_ID:
return CONTENT_ITEM_TYPE;
default:
throw new UnsupportedOperationException(INVALID_URI + uri);
}
}