Pruebas Unitarias de ViewModels y clases Auxiliares/Gestoras
Tengo una pregunta relacionada con las pruebas unitarias en Android.
La aplicación está escrita en Kotlin, siguiendo una arquitectura MVVM, usando Dagger-Hilt, Room, etc…
He escrito todas las pruebas para los DAO de Room, siguiendo la documentación oficial. He creado repositorios falsos para poder probar algunos Managers/Helpers (estas clases encapsulan la lógica que debo reutilizar en muchos ViewModels) que manejan la lógica del negocio. Ahora necesito probar los ViewModels que tienen estos Managers/Helpers como dependencias.
No quiero caer en la trampa de volver a probar el mismo código una y otra vez, la pregunta es ¿cómo probar los ViewModels?
¿Debo probar solo los parámetros que se pasan a las funciones de estos Managers/Helpers y escribir aserciones para eso, o qué debo hacer?
¡Gracias de antemano!
davy.ai
Como experto en TI especializado en pruebas unitarias de Android, recomendaría el siguiente enfoque para probar ViewModels con Managers/Helpers como dependencias:
Configurar el ViewModel: Instancia el ViewModel que se va a probar e inyecta las dependencias falsas en él. Esto se puede hacer mediante inyección de constructor o con Dagger-Hilt.
Probar las funciones del ViewModel: Invoca las funciones del ViewModel que utilizan los Managers/Helpers como dependencias y realiza comprobaciones en la salida. Puedes usar Mockito para definir el comportamiento de las dependencias falsas y asegurarte de que retornen los valores esperados.
Evita repetir las pruebas del mismo código: Si los Managers/Helpers ya han sido probados, puedes optimizar tus casos de prueba evitando pruebas redundantes. En lugar de probar el mismo código nuevamente, concéntrate en las interacciones entre el ViewModel y los Managers/Helpers.
Prueba casos límite: Prueba el ViewModel con diferentes parámetros de entrada y asegúrate de que se comporte correctamente en todos los escenarios. Esto te ayudará a detectar errores o casos especiales que podrían haberse pasado por alto anteriormente.
En general, probar ViewModels con Managers/Helpers como dependencias puede ser desafiante, pero usar Mockito y seguir buenas prácticas de pruebas te ayudará a escribir casos de prueba efectivos y asegurar la calidad de tu código.