добавить эту запись, как я думаю, что это может помочь программистам, которые хотят протестировать свой контент-провайдер.
Представьте, что ваш контент-провайдер называется MyProvider и у вас есть контрактный класс MyProviderContract, определяющий некоторые константы.
Прежде всего, вы напишете тестовый класс под названием MyProviderTestCase
, который наследуется от ProviderTestCase2<MyProvider>
. Вы должны определить конструктор, который будет вызывать super
конструктор:
public MyProviderTestCase() {
super(MyProvider.class, MyProviderContract.AUTHORITY);
}
Затем, вместо того, чтобы использовать непосредственно у поставщика (не использовать getProvider()
, как пользователи вашего провайдера контента не будет обращаться к нему напрямую), используйте getMockContentResolver()
, чтобы получить ссылку на контент-резольвер, а затем вызвать методы этого преобразователя контента (query
, insert
и т. Д.). В следующем коде я покажу, как проверить метод insert
.
public void testInsert() {
Uri uri = MyProviderContract.CONTENT_URI;
ContentValues values = new ContentValues();
values.put(MyProviderContract.FIELD1, "value 1");
values.put(MyProviderContract.FIELD2, "value 2");
Uri resultingUri = getMockContentResolver().insert(uri, values);
// Then you can test the correct execution of your insert:
assertNotNull(resultingUri);
long id = ContentUris.parseId(resultingUri);
assertTrue(id > 0);
}
Затем вы можете добавить много методов, как вы хотите, используя распознаватель контента вместо вашего провайдера контента непосредственно, как бы пользователи вашего провайдера контента.
В классе ProviderTestCase2 кода в коде не достаточно. Это очень полезно. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
В [Документация для Android] (http://developer.android.com/tools/testing/contentprovider_testing.html#WhatToTest) они рекомендуют не использовать напрямую контент-провайдера и вместо этого передавать контент-разрешение. Просто прочитайте мой пост, чтобы увидеть более подходящий пример тестирования поставщика контента. – eternay