write unit test studio run example dependency create and activity android testing instrumentation

android - unit - Accediendo a recursos de prueba de instrumentación



unit test android (3)

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.

Estoy tratando de encontrar una forma para que mis pruebas de instrumentación tengan acceso a los recursos de cadena generados dentro del paquete de prueba.

Más detalles:

Tengo un caso de prueba de Android que hereda de ActivityInstrumentationTestCase2. Utilicé el nuevo Android Test Project 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 forma de acceder mediante programación a los recursos de cadena en el proyecto de prueba en las diversas 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 el código anterior es una importación de mi paquete de prueba y no del paquete de la aplicación bajo prueba. Puedo acceder a los recursos definidos en el paquete de la aplicación con la última llamada.

Sería útil encontrar una forma de acceder a los recursos de cadena XML definidos en mis pruebas (ya que quiero evitar escribir cadenas en el código). ¿Qué estoy haciendo mal?


Incluso si esta publicación ya no es actual, esta adición podría ayudar a alguien:

Para comprender cómo funciona esto, debe tener en cuenta que el contexto en el que vive su instrumentación es diferente al contexto de la aplicación contra la que está ejecutando su prueba. Como dijiste correctamente, NO PUEDES acceder a los recursos de tu objetivo desde el contexto de la instigació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 instrumentación (como escribió Wujun), ni el contexto de destino está disponible, hasta que la construcción del caso 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 probará y com.myProject.test es el paquete del proyecto de prueba.

Me funcionó si coloco el código dentro de setup() . No funciona si lo coloco dentro del constructor.