¿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.
- El módulo de prueba de Android (Gradle Plugin 1.3) no funciona: "debug-classes not found"
- Proporcionando datos de prueba para SharedPreferences para Robolectric
- Las pruebas de Android no se ejecutan en un dispositivo inferior a 5 (API 21) NoClassDefFoundError
- Cómo cambiar el título de las actividades en attach ()
- Cómo utilizar Espresso Idling Resource
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()
enBarActivity
y compruebe el resultado enTestActivity.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!
- Espresso 2.0 - Método anotado con @Test dentro de la clase extendiendo junit3 testcase
- Espresso cómo hacer clic en un ImageView colocado en el primer elemento de la lista?
- Permisos de solo prueba de Android con gradle
- Prueba de unidad de Android: cómo borrar SharedPreferences
- Android Espresso: ViewPager no tiene instancia de adaptador
- Clases de utilidad comunes para proyectos de prueba de Android
- Android Espresso prueba el flujo de aplicaciones
- Prueba de intención Espresso fallando
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 ()