Intereting Posts
Как показать индикатор выполнения до тех пор, пока не будет воспроизводиться видео в реальном времени Android? Папка тестовых ресурсов с Robolectric и Gradle Anko: внутренняя область применения, сбивающее с толку разрешение собственности Asmack XMPP регистрация новых пользователей Вставить библиотеку Zxing без использования приложения сканера штрих-кода Фрагмент Nested Viewpager не инициализируется Убейте мое приложение после завершения Получите широту и долготу позиции, нажатой на карту forge 0.5.1 MapView Как повысить эффективность обновлений для моего приложения Android RecyclerView Adapter Количество элементов возвращается 0 при модульном тестировании Ошибка вызова сенсорного экрана adb при вызове BroadcastReceiver: не может создавать класс; Нет пустого конструктора Предоставляет ли Proguard одинаковое отображение, если источник не изменился? Как создать метод для метода расчета возраста в android Невозможно установить OnActionExpandListener: это не поддерживается, используйте MenuItemCompat.setOnActionExpandListener ()

Тестирование пользовательского ContentProvider в Android

Я написал, что мой контент-провайдер должен был обернуть доступ к двум таблицам в базе данных SqlLite. Теперь я хотел бы написать несколько тестов для этого, но я никогда этого не делал. Прочитав раздел в руководстве разработчика, я должен сказать, что мне ничего не удалось проверить.

Ниже приведен мой код. Это единственный класс в тестовом проекте, который соответствует моему основному проекту. Когда я запускаю его в Eclipse, эмулятор запускается правильно, пакеты устанавливаются, но он не запускает тест:

Не удалось выполнить тестовый прогон: пробный запуск неполный. Ожидаемые 1 тесты, полученные 0

Вот тестовый класс:

public class ArticleProviderTest extends ProviderTestCase2<ArticleProvider> { static final Uri[] validUris = new Uri[] { Articles.CONTENT_URI, Pictures.CONTENT_URI, Pictures.getContentUriForArticleId(1) }; public ArticleProviderTest(Class<ArticleProvider> providerClass, String providerAuthority) { super(providerClass, providerAuthority); } @Override protected void setUp() throws Exception { super.setUp(); } public void testQuery() { ContentProvider provider = getProvider(); for (Uri uri : validUris) { Cursor cursor = provider.query(uri, null, null, null, null); assertNotNull(cursor); } } } 

И файл манифеста, если он помогает:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="fr.marvinlabs.xxxx" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <instrumentation android:targetPackage="fr.marvinlabs.xxxx" android:name="android.test.InstrumentationTestRunner" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="android.test.runner" /> </application> </manifest> ? <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="fr.marvinlabs.xxxx" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <instrumentation android:targetPackage="fr.marvinlabs.xxxx" android:name="android.test.InstrumentationTestRunner" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="android.test.runner" /> </application> </manifest> 

Когда я запускаю конфигурацию отладки, точки останова в конструкторе и в setUp не запускаются. ?!

Я также не нашел много информации в сети. Может ли кто-нибудь помочь мне получить некоторое представление о том, как тестирование должно быть настроено (в основном создать тестовый файл базы данных, заполнить его некоторыми данными, запросить его, …)?

Хорошо понял. Ошибка заключалась в том, что я не предоставлял конструктор по умолчанию для тестового класса. Я переопределил неправильный конструктор:

 public ArticleProviderTest(Class<ArticleProvider> providerClass, String providerAuthority) { super(providerClass, providerAuthority); } 

сейчас

 public ArticleProviderTest() { super(ArticleProvider.class, "com.blah.azerty"); } 

2am – это время, когда вы не можете полностью прочитать документы, а днем ​​лучше 🙂

Я нашел NotePadProviderTest.java в проекте примера NotePadProviderTest.java предоставленном SDK, чтобы стать хорошим началом.

Вы должны реализовать setUp() и tearDown() в которых вы создаете и удаляете базу данных.

Это отличный пример: http://www.google.com/codesearch/p?hl=ru#IrmxZtZAa8k/tests/src/com/android/providers/calendar/CalendarProvider2Test.java