¿Cómo puedo probar setResult () en una prueba de Android Espresso?

¿Hay alguna buena manera de probar el código de resultado y los datos en una prueba de Android Espresso? Estoy usando Espresso 2.0.

Supongamos que tengo una Activity llamada BarActivity.class , que al realizar alguna acción, llama a setResult(int resultCode, Intent data) con la carga útil apropiada.

Me gustaría escribir un caso de prueba para verificar el resultCode y los data . Sin embargo, debido a que setResult() es un método final , no puedo anularlo.

Algunas opciones que pensé eran:

  • Defina un nuevo método como setActivityResult() y simplemente use eso para que pueda ser interceptado, etc …
  • Escriba una TestActivity de prueba única que llamará startActivityForResult() en BarActivity y compruebe el resultado en TestActivity.onActivityResult()

Tratando de pensar lo que es menor de los dos males, o si hay alguna otra sugerencia sobre cómo probar esto. ¿Alguna sugerencia? ¡Gracias!

Si usted está dispuesto a actualizar a 2.1, a continuación, eche un vistazo a Espresso-Intents :

Utilizando el API de intención (primo de Mockito.when), puede proporcionar una respuesta para las actividades que se inician con startActivityForResult

Esto básicamente significa que es posible generar y devolver cualquier resultado cuando se inicia una actividad específica (en su caso la clase BarActivity ).

Compruebe este ejemplo aquí: https://google.github.io/android-testing-support-library/docs/espresso/intents/index.html#intent-stubbing

Y también mi respuesta sobre un problema algo similar (pero con la actividad de selector de contactos), en el que muestro cómo generar un resultado y enviarlo de vuelta a la actividad que se llama startActivityForResult ()

  • Espresso - Aserción de un TextView con datos cargados asíncronos
  • ¿Cómo esbozar imágenes de selección con intenciones Espresso?
  • Gradle: Cómo ejecutar la prueba de instrumentación para la clase
  • ¿Puedo tener un código de versión inferior en producción desde el canal de pruebas alfa?
  • ¿Cómo probar la funcionalidad relacionada con la fecha / hora en Android?
  • ¿Qué hace la propiedad testOptions.animationsDisabled en el complemento Android Gradle?
  • ¿Cómo puedo crear un módulo de prueba de Android en IntelliJ 13 para un proyecto Android de Gradle?
  • La ejecución de instrumentación falló debido a 'java.lang.IllegalAccessError'. Gradle + Espresso
  • La prueba de instrumentación de Android no encuentra clases del proyecto de biblioteca
  • Continúa el informe de cobertura de código jacoco después de un caso de prueba fallido
  • Android Sharding de prueba
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.