¿Cómo aplica su empresa TDD al desarrollo de Android?

Como ya se mencionó, TDD en Android es un desafío. Pero puede hacerse más fácil si diseña su aplicación de manera que sea compatible con TDD. Para simplificar la prueba de su aplicación, desea reducir la dependencia entre el SDK de Android y su código.

Un lugar para comenzar es separar la lógica de negocios de su código que accede al SDK de Android. El patrón Modelo-vista-presentador podría ser la forma en que eligió hacer esto. Cuando use MVP, su lógica de negocios interactuará con Modelos (interfaces y abstracciones sobre modelos de base de datos de Android) y Vistas (abstracciones sobre fragmentos, actividades, etc.) a través de un Presentador. La introducción de estos niveles de abstracciones le proporciona algo (la capa de presentador) que puede probarse utilizando las bibliotecas de Java Testing (JUnit, etc.).

Una búsqueda en Internet debería proporcionarle algunos ejemplos para comenzar.

Para probar las unidades de disco que hablan con el ecosistema de Android, deberá usar herramientas como Robolectric para apagar el SDK de Android. Por ejemplo, puede usar Robolectric para asegurarse de que las implementaciones de la vista (fragmentos, actividades) se actualicen correctamente cuando se acceda a través de la interfaz de Vista. Es posible que reconozca algunas de estas ideas de las de una arquitectura hexagonal.

Otras herramientas, como Espresso, pueden ser útiles para escribir pruebas que interactúan con su interfaz de usuario. Con estos, puede comprobar que cuando se producen interacciones en una actividad, las llamadas resultantes al presentador son correctas.

Las últimas revisiones de Android Studio (v1.1 +) admiten la ejecución de pruebas JUnit y pruebas con los corredores de prueba Robolectric.

Es muy difícil aplicar Tdd en Android debido a las limitaciones de su marco de instrumentación de prueba. También está el hecho de que tiene que compilar su aplicación (que incluye todos los recursos) cada vez que quiera ejecutar sus pruebas.

Las soluciones de prueba externas como robolectric han ayudado, pero aún son difíciles de implementar y configurar porque el equipo de herramientas de Android no está brindando soporte para estas bibliotecas con el nuevo sistema de construcción Gradle.

Si puede separar las preocupaciones y tener su lógica de negocios en Java, eso cambia las cosas y podría usar junit y ejecutar sus pruebas unitarias muy rápido.

Cuando aparecen las dependencias de Android, las cosas se complican un poco cuando se habla de pruebas o Tdd en este caso.

Para TDD, preferimos Robolectric. Aún así depende de la línea de tiempo del proyecto. Aunque quiero compartir poca información sobre el marco Robolectric.

Robolectric, marco de prueba de unidad que se construye sobre JUnit. Proporciona una forma de probar una aplicación de Android sin ejecutarla en un emulador o dispositivo. ¡Sabemos que ejecutar pruebas en un emulador o dispositivo Android es lento! Construir, implementar y ejecutar la aplicación a menudo lleva un minuto o más. Por eso Robolectric es muy bueno.

He escrito un tutorial sobre cómo podemos integrar Robolectric en Android. Consulte el tutorial Robolectric, Unit testing framework para Android para obtener más información.

More Interesting

¿Es cierto que los buenos programadores no depuran?

Cómo convertirse en ingeniero de software en casa

¿Adoptar una metodología llamada 'Ágil' como Scrum (y tal vez contratar entrenadores) proporcionará más beneficios que el desarrollo incremental simple, con una cola priorizada dinámicamente, compilaciones frecuentes e interacción completa con el cliente? En otras palabras, ¿se ha sobrevendido todo el 'asunto ágil' cuando las prácticas adaptativas de antaño funcionan bien?

¿Cómo se compara el alcance de los grados de ingeniería de aviónica y aeroespacial en IISt? ¿La aviónica abarca mucho CSE y ECE para que tenga un alcance mucho más amplio?

¿Qué esperan los ingenieros de software de un increíble gerente de producto (en tecnología)?

¿Cuál es el mejor centro de pruebas de software que brinda asistencia de colocación?

¿Qué plataforma es mejor para una carrera, pruebas de software o SAP BW?

¿Cuáles son las otras oportunidades en el campo de TI aparte de la codificación / desarrollo con conocimientos básicos de programación Java?

¿Cómo impacta el 'Naming of Things' en un desarrollo eficiente del código fuente?

Si me mudo a Australia, ¿será fácil encontrar trabajo en el desarrollo de software?

¿Cuáles son las herramientas necesarias para desarrollar un producto integrado, especialmente software?

Cómo externalizar el desarrollo de software para startups

¿Por qué la mayoría de las personas que se hacen grandes en la industria de TI estudian Ingeniería Electrónica primero y luego hacen una maestría en CS?

¿Cómo funciona realmente un equipo de desarrolladores en la vida real?

¿Qué diferencia hace un posgrado en el papel de ingeniero de software?