Uso de una aplicación personalizada con InstrumentationTestCase
Tengo un ActivityInstrumentationTestCase2 (que es una subclase de InstrumentationTestCase). Cuando ejecuto mis testcases, necesito lanzar mis actividades usando un objeto de TestApplication de encargo, puesto que estos objetos de TestApplication tienen cierta configuración necesaria para mis pruebas.
Sin embargo, no veo una forma de personalizar mis testcases de ActivityInstrumentationTestCase2 para usar el objeto de aplicación de prueba. ¿Hay una manera de hacerlo?
- Llamar a un método de la actividad probada de una prueba usando espresso y ver sus resultados
- Cómo estar seguro de que la aplicación de Android funcionará en todos los dispositivos
- Cómo crear un servidor para la comunicación con una aplicación de Android
- ¿Cómo detengo la locura del mono?
- Android UIAutomator haga clic en el dispositivo
- "La prueba no se ejecutó hasta la finalización." Motivo: 'La instrumentación ejecutada falló debido a' El proceso se estrelló. '' Mientras se ejecutan varios testcases
- ¿Hay algún generador de datos falsos que funcione con Android?
- ¿Qué es exactamente un mono haciendo jugar con mi teléfono Android?
- Actividad de prueba onCreate Exception
- ¿Cómo aceptar el diálogo en las pruebas unitarias?
- Acceso a los recursos de prueba de instrumentación
- Android Robotium NoClassDefFoundError
- ¿Cómo asegurarse de que mi aplicación para Android funcione en todos / la mayoría de los teléfonos?
No sé si hay una manera mejor, pero pude lograr esto usando 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 necesitaba modificar el 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 especificado también. Si está ejecutando desde la línea de comandos, necesitará hacer algo como lo siguiente:
adb shell am instrument -w com.mypackage/com.mypackage.test.MyInstrumentationTestRunner
Debería ser
@Override public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { return Instrumentation.newApplication(YourAppClass.class, context); }
Porque inyecta Contexto a un contenedor correctamente
- Firebase: No se pueden resolver las bibliotecas de google auth y GoogleSignInResult
- ¿Qué es "self" que aparece en la vista de seguimiento de android