Estoy escribiendo pruebas para un componente en mi aplicación Android. Este componente usa actividades para hacer algunos informes. Entonces necesito una actividad para probar el componente (fea arquitectura) y pensé que sería fácil crear una actividad ficticia dentro del proyecto de prueba y crear pruebas heredadas de ActivityInstrumentationTestCase2<TestActivity>
, pero por alguna razón siempre recibo la excepción java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.xxx/.Testctivity }
.¿Es posible definir Actividad dentro del proyecto de prueba de Android y ejecutar una prueba en su contra?
La actividad de prueba se agrega al archivo de manifiesto y parece que el paquete está configurado correctamente.
He tratado de ponerlo en los paquetes com.xxx (paquete de la aplicación) y com.xxx.test, sin suerte. Pero cuando muevo TestActivity a la aplicación de destino todo funciona bien. Así que comencé a preguntarme cuál es la diferencia entre el proyecto de prueba y mi aplicación y es incluso posible tener actividades dentro de los proyectos de prueba.
Cuando cambio a la libre targetPackage , comienza a fallar con NoSuchMethodException en InstrumentationTestRunner.onCreate – basin
Tuve problemas con este enfoque; Creo que si el paquete/manifest/@ es el mismo que/manifest/instrumentation/@ android: targetPackage, las pruebas reemplazarán efectivamente la aplicación bajo prueba, lo que imposibilitará hacer referencia a sus clases. Obtenía ClassNotFoundExceptions. –
Lo hice funcionar con este enfoque agregando un AndroidManifest.xml adicional en el directorio androidTest. Pero con la versión más reciente de Android Studio, a partir del 2.3.1 estoy usando en este momento, el elemento '' no es necesario. –