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.