Escribir / crear archivos dentro del contexto de la instrumentación de Android

Tengo una clase que crea (o abre) un archivo para escribir algunos datos a él. Esta clase recibe un Contexto en el constructor, lo guarda en un campo de instancia y luego lo utiliza para llamar al método context.openFileOutput.

Al ejecutar la aplicación, instanciar esta clase pasando el ApplicationContext como el contexto, y todo está funcionando como se esperaba.

Sin embargo, cuando intento probar esta clase con una prueba de instrumentación, obtengo una NullPointerException . Estoy pasando el getInstrumentation().getContext() , que sé corresponde al contexto de la prueba, y no el de la aplicación real.

 getInstrumentation().getContext().openFileOutput("myFile", Context.MODE_PRIVATE); // This throws NullPointerException :( :( 

Dentro de la prueba, necesito que este archivo se cree en el paquete de prueba y no en el paquete de la aplicación, ya que no quiero sobrescribir el archivo en mi aplicación.

Sé que hay una clase RenamingDelegatingContext ahí fuera, pero no puedo pasar este contexto a mi clase ya que mi clase también abre un recurso sin formato, y quiero que ese recurso sea diferente al ejecutar la prueba.

He buscado mucho sobre esto, y no hay documentación sobre el Contexto de Instrumentación. No pude encontrar sus limitaciones ni nada que resuelva mi problema.

¿Sabes cómo hacer frente a esto?

No puedo recordar cuándo se cambió esto, pero el método actual para obtener un objeto Context durante las pruebas instrumentadas es importar

import android.support.test.InstrumentationRegistry;

y llama

InstrumentationRegistry.getContext();

¡Espero que esto ayude!

  • ¿Pruebas beta de Google Play sin una aplicación publicada?
  • Prueba de instrumentación para Android - ¿Cómo recibir nueva actividad después del cambio de orientación?
  • Cómo generar html informe con gradle 1.12?
  • IsolatedContext vs AndroidTestCase.getContext ()
  • Prueba de Android fuera del espacio de almacenamiento
  • Deshabilitar eventos a nivel de sistema en Android mono
  • ¿Cómo puedo obtener identificadores, nombres o rutas x para elementos ui utilizados en una aplicación para móviles (Android / iOS) para pruebas de automatización móvil?
  • Prueba de un servicio de accesibilidad de Android?
  • Cómo detener una aplicación de Android desde la consola
  • ¿Cómo forzar un cambio de orientación en una prueba de instrumentación de Android?
  • Android: ejecución de pruebas instrumentadas en el servidor de TeamCity
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.