2010-11-11 15 views
5

Tengo una ActivityInstrumentationTestCase2 (que es una subclase de InstrumentationTestCase). Cuando ejecuto mis pruebas, necesito iniciar mis actividades utilizando un objeto TestApplication personalizado, ya que este objeto TestApplication tiene alguna configuración necesaria para mis pruebas.Uso de una aplicación personalizada con InstrumentationTestCase

Sin embargo, no veo una forma de personalizar mis testcases ActivityInstrumentationTestCase2 para usar el objeto Application de prueba. ¿Hay una manera de hacerlo?

Respuesta

5

No sé si hay una manera mejor, pero pude lograr esto mediante el uso de un TestRunner personalizado.

public class MyInstrumentationTestRunner extends InstrumentationTestRunner { 

    @Override 
    public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
     return new MyTestApplication(context);  
    } 


} 

También es necesario modificar AndroidManifest.xml de mi proyecto de prueba para especificar el nuevo corredor:

<instrumentation android:name="com.mypackage.test.MyInstrumentationTestRunner" ... /> 

Y tuve que modificar mi IDE para utilizar el corredor de prueba especificada también. Si se está utilizando la línea de comandos, tendrá que hacer algo como lo siguiente en su lugar:

adb shell am instrument -w com.mypackage/com.mypackage.test.MyInstrumentationTestRunner 
4

Cabe

@Override 
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
    return Instrumentation.newApplication(YourAppClass.class, context);  
} 

porque inyecta Contexto a una envoltura correctamente

Cuestiones relacionadas