Acceso a los recursos de prueba de instrumentación
Estoy tratando de encontrar una manera para que mis pruebas de instrumentación tengan acceso a los recursos de cadena generados dentro del paquete de prueba.
Más detalles:
- Prueba de unidad Android, getString del recurso
- Cliente autónomo de Logcat
- No deje de generar gradle si una prueba falla con el gradle-android-test-plugin
- adb y dispositivo múltiple simultáneamente
- ¿Cómo aceptar el diálogo en las pruebas unitarias?
Tengo un caso de prueba de Android que hereda de ActivityInstrumentationTestCase2. Utilicé el nuevo proyecto de prueba Android de Eclipse para crear la prueba en primer lugar. El proyecto de prueba tiene recursos (similares a los recursos para un proyecto regular de Android). Estoy tratando de encontrar una manera de acceder mediante programación a los recursos de cadenas en el proyecto de prueba en las distintas pruebas individuales. Yo he tratado:
String s = getInstrumentation().getContext().getString(R.string.blah);
y
String s = mActivity.getApplicationContext().getString(R.string.blah);
Ambos métodos lanzan una NotFoundException. Tengo la cadena "blah" definida en mi strings.xml. R en código anterior es una importación de mi paquete de prueba y no el paquete de la aplicación bajo prueba. Puedo acceder a recursos definidos en el paquete de aplicación con esta última llamada.
Sería útil encontrar una forma de acceder a los recursos de cadenas definidas XML en mis pruebas (ya que quiero evitar escribir las cadenas en el código). ¿Qué estoy haciendo mal?
- Prueba de varios dispositivos Android en una máquina
- ¿Qué tipo de aplicaciones de Android son las más difíciles de soportar (preocupación de fragmentación)
- Mockito AbstractMethodError en initMocks
- ¿Cómo hago un MotionEvent para hacer zoom?
- ¿Cómo probar las notificaciones de GCM sin la aplicación?
- Puntos que debe recordar al probar la aplicación de Android
- Prueba de uso de la batería
- Obfuscate Android proyecto de prueba, así como el proyecto (prueba en ejecución en la versión ofuscada y la versión)
Incluso si esta publicación ya no es actual, esta adición podría ayudar a alguien:
Para entender cómo funciona esto, debes tener en cuenta que el contexto en el que vive tu instrumentación es otro que el contexto de la aplicación en la que estás ejecutando tu prueba. Como has dicho correctamente, NO puedes acceder a los recursos de tu destino desde el contexto de la instumentación. Puede definir algunos para su contexto de instrumentación en un archivo xml separado dentro del proyecto de prueba o, si desea utilizar los recursos predefinidos, puede obtenerlos de esta manera:
Resources res = getInstrumentation().getTargetContext().getResources(); res.getString(R.string.xxx); // get a string resource
Ni el contexto de la instrumentación (como escribió Wujun), ni el contexto objetivo están disponibles, hasta que la construcción de la caja de prueba se haya completado completamente.
Lo intenté:
String s = getInstrumentation().getContext().getString(com.myProject.test.R.string.blah);
Donde com.myProject
es el paquete del proyecto que se va a probar y com.myProject.test
es el paquete del proyecto de prueba.
Funcionó para mí si coloco el código dentro de setup()
. No funciona si la coloco dentro del constructor.
Creo que esto no es posible sin almacenar los archivos de recursos en otro lugar, pero puedes usar algo como Robotium donde solo usas Solo.getString () y obtienes tu recurso.
- Gson – Igual nombre de campo, diferentes tipos
- Utilice argumentos de formato de cadena en el archivo xml de diseño de Android