Не удается запустить Android ServiceTestCase
Я не могу получить какие-либо тестовые случаи, которые расширяют ServiceTestCase для запуска. Там нет ошибок, они просто не выполняются.
Другие тестовые случаи, которые расширяют AndroidTestCase, выполняются.
Проекты настроены следующим образом:
У меня есть библиотека Android, которая содержит сервис. Это файл манифеста выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.something.android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="9"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application>
<service android:name=".ExampleService"
android:exported="false"
android:process=":example_service">
</service>
</application>
</manifest>
Android Library Project содержит тестовый проект в папке test (созданный с помощью инструментов Android)
Это содержит AndroidManfiest.xml следующим образом
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.something.android.tests"
android:versionCode="1"
android:versionName="1.0">
<application>
<uses-library android:name="android.test.runner" />
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.something.android.tests"
android:label="Tests for com.something.android"/>
</manifest>
У меня также есть build.properties в тестовом проекте, который содержит:
test.project.dir=.. android.library.reference.1=..
Я выполняю тесты, выполняя ant clean run-tests.
Что мне нужно сделать, чтобы запустить тест ServiceTestCase?
Заранее спасибо.
2 ответа
Убедитесь, что вы предоставили конструктор по умолчанию для ServiceTestCase. Тот, который Eclipse генерирует для вас, может не подходить. Например, в моем случае Eclipse сгенерировал для меня:
public class MyServiceTestCase extends ServiceTestCase<MyService> {
public MyServiceTestCase(Class<MyService> serviceClass) {
super(serviceClass);
}
...
}
Android JUnit не смог создать экземпляр MyServiceTestCase, но он не жаловался, и я только увидел, что ни один тестовый пример не запускался.
Ранее я заменил конструктор следующим, и он работал хорошо:
public class MyServiceTestCase extends ServiceTestCase<MyService> {
public MyServiceTestCase() {
super(MyService.class);
}
...
}
Надеюсь, это работает для вас.
Принятый ответ больше не работает для меня.
Тестовые случаи, такие как ActivityInstrumentationTestCase2 или ServiceTestCase, не рекомендуются в пользу ActivityTestRule или ServiceTestRule.
Кажется, они забыли обновить актуальную документацию.