Estructura y configuración de proyectos Android para testing

Clase 3 de 16Curso de Android Testing

Resumen

Comprender cómo organizar y configurar correctamente un proyecto Android facilita significativamente las tareas relacionadas con el testing. Te presentamos una estructura de proyecto básica, pero efectiva, dividida en tres capas esenciales: data, domain y presentation.

¿Qué estructura debes usar para un proyecto Android enfocado en testing?

Trabajar con una estructura clara mejora la eficiencia en tareas de testing. La organización sugerida cuenta con tres capas principales:

  • Data: Aquí se encuentra user API, similar a como funciona con Retrofit, y una implementación concreta del repositorio UserRepository.
  • Domain: Esta capa contiene las data classes importantes para tu aplicación, tales como Place, con coordenadas geográficas, y User representando los datos más relevantes del usuario.
  • Presentation: Constituida por los composables para tu UI y un ViewModel que gestiona las llamadas al repositorio y mantiene el estado.

A continuación, veremos con más detalle cada capa para mejorar tu claridad sobre su importancia:

¿Cómo está organizada la capa de Data?

En esta capa encontrarás:

  • Una interfaz user API que define tres endpoints: getUser, getPlaces y getProfile.
  • Utiliza librerías como Coroutine Builders para gestionar llamadas y resistencia a errores mediante respuestas concretas y seguras con objetos user result y place result.
  • Implementación del repositorio, integrando diferentes llamadas que construyen datos más complejos como el Profile.

¿Qué elementos definentan la capa de Domain?

En esta capa fundamental, encontrarás:

  • Place: definida por un ID, un nombre, y sus coordenadas (latitud y longitud).
  • User y Profile: que establecen relaciones claras, como un usuario asociado con múltiples lugares.
  • Una interfaz del repositorio, el contrato que se implementa en la capa de datos.

¿Cuál es el propósito de la capa de presentación?

Aquí se gestionan:

  • Los composables que generan la interfaz de usuario.
  • Un ProfileViewModel que interactúa con el repositorio para actualizar y comunicar estados del sistema (cargando, error o perfil recibido).

¿Qué tipos de tests debes incluir y cómo organizarlos?

Es vital entender la ubicación de tus tests en Android Studio:

  • Carpeta test: tests unitarios, rápidos y aislados.
  • Carpeta Android test: tests de instrumentación o end-to-end, más lentos y dependientes del hardware o equipos físicos.

Estos tests necesitan distintas librerías confirmadas por la configuración explícita en Gradle:

  • JUnit y Truth (para test unitarios).
  • MockK y Mock Web Server (simulación de clases o peticiones de red).
  • Coroutine test y Turbine (evaluar procesos asincrónicos y flows).
  • Compose Test y Navigation Test Compose (para verificar la UI y navegación).

¿Cómo configurar correctamente las librerías en gradle?

Debes distinguir claramente la forma en que Gradle maneja las dependencias:

  • implementation: Para código productivo.
  • testImplementation: Destinado a tests unitarios.
  • androidTestImplementation: Aplica para tests end-to-end y de instrumentación.

Además, en ciertos ambientes de testing, algunas configuraciones específicas son obligatorias (como packaging resources) para evitar errores frecuentes.