Не удается запустить 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.

ATSL ссылка

Кажется, они забыли обновить актуальную документацию.

Другие вопросы по тегам