2011-10-21 26 views
5

No puedo obtener ningún caso de prueba que extienda ServiceTestCase para que se ejecute. No hay errores, simplemente no se ejecutan.No se puede ejecutar Android ServiceTestCase

Se ejecutan otros casos de prueba que extienden AndroidTestCase.

Los proyectos están configurados de la siguiente manera:

Tengo una biblioteca de Android que contiene un servicio. Es archivo de manifiesto es el siguiente:

<?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> 

El Proyecto Biblioteca Android contiene un proyecto de prueba en la prueba de carpeta (creada usando las herramientas de Android)

Este contiene una AndroidManfiest.xml como la siguiente manera

<?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> 

también tengo un build.properties en el proyecto de prueba que contiene:

tested.project.dir = .. android.library.ref erence.1 = ..

Ejecuto las pruebas ejecutando pruebas de ejecución de ant clean.

¿Qué debo hacer para ejecutar la prueba ServiceTestCase?

Gracias de antemano.

Respuesta

11

Asegúrese de proporcionar un constructor predeterminado para el ServiceTestCase. El único que Eclipse genera para usted puede no ser apropiado. Por ejemplo, en mi caso Eclipse genera para mí:

public class MyServiceTestCase extends ServiceTestCase<MyService> { 

    public MyServiceTestCase(Class<MyService> serviceClass) { 
    super(serviceClass); 
    } 
    ... 
} 

JUnit Android no fue capaz de crear una instancia MyServiceTestCase, pero no se quejó, y sólo pude ver que no hay casos de prueba en ejecución.

Thefore que sustituyó el constructor con la siguiente, y funcionó muy bien:

public class MyServiceTestCase extends ServiceTestCase<MyService> { 

    public MyServiceTestCase() { 
    super(MyService.class); 
    } 
    ... 
} 

espero que funcione para usted.

+0

Seguí su consejo pero sigo recibiendo este error. ver http://stackoverflow.com/questions/33311533/how-to-correctly-use-android-test-servicetestcase – likejiujitsu

0

La respuesta aceptada ya no funciona para mí.

casos que sienta jurisprudencia como ActivityInstrumentationTestCase2 o ServiceTestCase se está desfasado y en ActivityTestRule o ServiceTestRule.

ATSL link

Parece que se olvidó de actualizar la documentación real.

Cuestiones relacionadas