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:

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?

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.

  • Espresso - Juego SeekBar
  • Mockito Uri.parse devuelve siempre null
  • Android Espresso: ¿Cómo comprobar que el mensaje Toast no se muestra?
  • Haga que Espresso espere a que WebView termine de cargar
  • ¿Cómo detengo la locura del mono?
  • Cómo crear un servidor para la comunicación con una aplicación de Android
  • ¿Cuál es la mejor manera de probar enviar / recibir mensajes MMS con Android?
  • ¿Cómo puedo agregar permisos adicionales de Android para mi proyecto de prueba de interfaz de usuario solamente?
  • Cómo saber si la pantalla está encendida con ADB
  • Android prueba testPreconditions
  • Gradle Robolectric Resources NotFoundException en pruebas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.