Estructura y configuración de proyectos Android para testing
Clase 3 de 16 • Curso 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 repositorioUserRepository
. - Domain: Esta capa contiene las
data classes
importantes para tu aplicación, tales comoPlace
, con coordenadas geográficas, yUser
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
ygetProfile
. - Utiliza librerías como
Coroutine Builders
para gestionar llamadas y resistencia a errores mediante respuestas concretas y seguras con objetosuser result
yplace 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
yProfile
: 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.