Не удается запустить Android ServiceTestCase - PullRequest
5 голосов
/ 22 октября 2011

Я не могу получить какие-либо тестовые случаи, которые расширяют 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 содержит тестовый проект в папке 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 в тестовом проекте, который содержит:

tested.project.dir = .. android.library.reference.1 = ..

Я выполняю тесты, выполняя ant clean run-tests.

Что мне нужно сделать, чтобы запустить тест ServiceTestCase?

Заранее спасибо.

Ответы [ 2 ]

11 голосов
/ 24 января 2012

Убедитесь, что вы предоставляете конструктор по умолчанию для 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);
  }
  ...
}

Надеюсь, у вас это получится.

0 голосов
/ 04 июня 2016

Принятый ответ больше не работает для меня.

Тестовые случаи, такие как ActivityInstrumentationTestCase2 или ServiceTestCase, не рекомендуется в пользу ActivityTestRule или ServiceTestRule.

ATSL ссылка

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

...