Como ya comentamos en el anterior artículo “Desarrollo orientado a pruebas – TDD” los test unitarios son sumamente importantes para la calidad del desarrollo, y TDD nos obliga a escribir estos tests antes de empezar con el código propiamente dicho. En este artículo veremos como configurar nuestro proyecto Android para usar TDD.
Tipos de tests
Test Unitarios
Los test unitarios ocupan la base de la pirámide, hacen que nuestra aplicación sea sólida y son fáciles de escribir
Test de Integración
Los test de integración ocupan el segundo escalón de la pirámide y aseguran la interoperabilidad de los diferentes módulos de la aplicación.
Test de UI
Los test UI se encargan de verificar que la aplicación visualmente se comporta como esperamos, los mensajes que se muestran son los apropiados, etc…
Tipos de tests en Android
Hay diversos frameworks y herramientas para realizar tests en Android, unos son proporcionados por Google y otros son herramientas de terceros.
En Android tenemos dos tipos de test diferentes:
Test Unitarios
Los test unitarios normalmente se ocupan de probar pequeñas funcionalidades (métodos, clases, procesos…) para ello tenemos principalmente dos herramientas
- JUnit: Es un framework simple para escribir pequeñas pruebas repetitivas.
- Robolectric: Es un framework muy popular para Android ya que permite escribir test unitarios y ejecutarlos sobre la JVM sin necesidad de emulador o dispositivo físico.
Test de Instrumentación o UI
Los test de instrumentación o UI son tests donde el usuario simula la interacción con la interfaz, como pulsar un botón, escribir en un EditText, etc…
Estos tipos de tests necesitan de un emulador o un dispositivo físico.
Algunas de las herramientas que podemos usar para realizar estos tipos de tests son:
- Espresso: Es un framework para test UI desarrollado por Google.
- Robotium: Es un framework de tereceros para tests UI. Puedes leer más sobre esto en el siguiente enlace.
Estructura de Packages para tests
En todo proyecto tenemos dos packages diferenciados para los test:
- Test: En esta carpeta se encuentran los tests unitarios, que como ya dijimos anteriormente sólo necesitan la JVM. No tienen accesos a componentes específicos de Android como el contexto.
- androidTest: Aquí se encuentran los tests de instrumentación, que si tienen acceso a componentes específicos de Android y necesitan un emulador o dispositivo físico para ejecutarse.
Estructura del proyecto
Para el proyecto vamos usar un patrón de diseño MVP (puedes leer más sobre patrones de diseño en el artículo “Patrones de diseño. Esos grandes desconocidos“)
Crearemos un proyecto nuevo basándonos en las plantillas estándar que proporciona Android Studio creando una con actividad en blanco, cuyo nombre interno será com.jamontes79.tdd_ejemplo, incluyendo una única Activity llamada LoginActivity.
Con esto ya tenemos el proyecto creado y listo para empezar a realizar los test la tercera parte de esta serie de artículos sobre TDD en Android.
Puedes descargar el proyecto en este punto desde el siguiente enlace de github: https://github.com/jamontes79/TDD_Ejemplo/tree/c64f7df9ca81b7da1876cbf7011b74c7731a9fd1
Espero que te sirva de ayuda.
Pingback: ¿Cómo hacer TDD en Android? Parte 4 – Espresso & Tests de UI – Alberto Montes de Oca