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?

One Solution collect form web for “Escribir / crear archivos dentro del contexto de la instrumentación de Android”

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!

  • Android: ¿Cómo puedo guardar, borrar y restaurar SharedPreferences para la prueba de unidades?
  • ¿Cómo forzar un cambio de orientación en una prueba de instrumentación de Android?
  • Prueba de un servicio de accesibilidad de Android?
  • Pruebas de facturación en la aplicación con cuentas de prueba
  • Problema con Android IAP, sin OrderID en el objeto de compra
  • Destruye y reinicia la actividad con la biblioteca de soporte de pruebas
  • ¿Pruebas beta de Google Play sin una aplicación publicada?
  • Prueba de pérdidas de memoria en las aplicaciones de Android
  • Robolectric + rxJava + retrofit Segunda llamada lanza java.io.InterruptedIOException
  • Saltar prueba para la variante de construcción específica en Android + Gradle?
  • Prueba de suscripción en Android: elemento no encontrado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.