¿Qué probar con Robolectric?
Me parece que estoy malentendiendo fundamentalmente el propósito de Robolectric. He estado luchando con él durante una semana ya, y hasta ahora recibiendo un nuevo mensaje de error se considera como haciendo progreso. Soy capaz de probar algunas cosas básicas como las vistas estáticas en una actividad, pero cuando algo más complicado entran en juego las cosas se desmoronan. Tuve que extender Robolectric para soportar bibliotecas de terceros con ciertos parámetros, barras de acción de Appcompat y muchas otras cosas que consumían mucho tiempo y que en realidad no estaba documentada en ninguna parte, y las cosas avanzan a un ritmo bastante glacial. Estoy empezando a pensar que lo estoy utilizando de una manera incorrecta y simplemente no se supone que haga lo que quiero que haga.
La lógica general de la aplicación es bastante sencilla, por lo que no hay mucho para la prueba de unidad, lo más complicado es la interfaz de usuario y las llamadas de la API remota. ¿Se supone que Robolectric hace que las pruebas de unidad para Android sean menos dolorosas que con JUnit porque puede ejecutarse en la JVM y admite algunas clases de Android? Tal vez un marco de prueba de conducta de cuadro negro como Espresso sería más adecuado para mis necesidades? Pero utilizamos la integración continua, y Robolectric era agradable y fácil de configurar para ejecutar pruebas en el servidor CI, y me gustaría mantenerlo así.
- ¿Cómo ejecutar pruebas de unidad para Android no está en el dispositivo o emulador?
- ¿Hay una manera de iniciar el emulador de Android en Travis CI construir?
- Unidad de prueba SparseArray utilizando JUnit (utilizando JVM)
- Creación de la notificación de InstrumentationTestCase
- La compatibilidad con la prueba de unidades Android no funciona en los módulos de la biblioteca de Android
¿Para qué utiliza Robolectric? Muchas publicaciones del blog lo recomiendan para "pruebas de ciclo de vida de la actividad", pero como también soy bastante nuevo en el mundo de Android, no entiendo realmente el propósito de ello, sobre todo porque la aplicación que estoy probando es sólo de retrato . ¿Podría alguien dar una visión general de lo que utiliza Robolectric para, y cómo hacerlo, preferiblemente con ejemplos de código y explicar por qué y cómo esas pruebas son importantes?
- Android Robolectric unidad de prueba de Marshmallow PermissionHelper
- Prueba de la unidad de Android que no informa Fallando con error ()
- ¿Por qué fallan las grandes pruebas de unidad de actividad de Android?
- Prueba de la clase de comunicación con DB a través de DAO de ORMLite
- Las pruebas consecutivas de Junit de Android no reflejan los datos reales de la base de datos subyacente
- Android RxJava 2 Prueba JUnit - getMainLooper en android.os.Looper no se burla de RuntimeException
- Android: consigue el i-ésimo TextView dentro de un ListView
- Android Studio 1.1, instalación de prueba junit simple
Lo usamos para:
- Prueba unitaria: todos los componentes de los analizadores y utils, a los controladores y presentadores
- Pruebas de integración / aceptación: la lógica de negocio de la aplicación, por pantalla (que cae en la integración y / o pruebas de aceptación)
No lo usamos para (y lo hemos encontrado difícil de usar para estos):
- Probando la capa de red (ejecutamos todas las pruebas mediante la inyección de los datos de prueba de la misma manera que la capa de red, los analizadores se prueban por separado)
- Flujos de usuario a través de diferentes pantallas
Si está buscando más de este último, quizás Espresso / Robotium son más adecuados para sus necesidades. Y usted absolutamente puede ejecutar estos como parte de su oleoducto CI, pero tendrá que invertir algún tiempo en la configuración, o la integración con algo como Appurify.
Si le resulta muy difícil escribir sus pruebas, podría tener que hacer más con la forma en que su aplicación está diseñada que con la forma en que está usando robolectric. Vea mi respuesta aquí también, podría ayudarle: Escribir pruebas de aceptación de Android con robolectric: ¿cómo podría hacerse?
- Animación al pulsar el botón Atrás
- Java.lang.NullPointerException: Intento de obtener longitud de matriz nula