Utilice Android Hilt para realizar pruebas.Las pruebas son las principales … | por Nyame Bismark | junio de 2021



Las pruebas son uno de los requisitos principales que todo desarrollador necesita para tener una base de código mantenible. A medida que el proyecto crezca, las necesidades comerciales aumentarán, por lo que tendremos que confiar en las pruebas. Esto es para asegurarnos de mantener la confianza al agregar cambios al proyecto sin romper el flujo o la estructura del código existente.
Sin embargo, la prueba también puedeelectrónico Es doloroso cuando tiene que escribir código y escribir pruebas, especialmente cuando hay muchas dependencias en la unidad de código en la que está ejecutando la prueba. En general, evitamos este dolor cuando sigue la arquitectura TDD, que requiere que escriba pruebas antes de escribir la implementación del código real, lo cual me parece útil.
En términos de pruebas, me gustaría ofrecerles una biblioteca de soporte muy buena, que no se prueba a sí misma, pero maneja la inyección de dependencias. Empecemos hablando de la prueba de Hilt.
Para usar Hilt en la prueba, incluya hilt-android-testing
Dependencias en el proyecto.
Nota: si usa la integración Jetpack, también debe incluir el procesador de anotaciones de la biblioteca integrada
kaptTest
okaptAndroidTest
Para Kotlin, o contestAnnotationProcessor
oandroidTestAnnotationProcessor
Para Java.
Realizar pruebas de IU
Ahora puede usar Hilt para realizar pruebas de IU, pero se requieren algunas configuraciones, como usar @HiltAndroidTest
Necesita generar todo el código Hilt correspondiente para la prueba.Necesitas agregar HiltAndroidRule
A la clase de prueba. Gestiona el estado de la prueba y realiza inyecciones en sus pruebas.
Hilt requiere la clase Application en la biblioteca y debe usar una aplicación que admita Hilt para realizar sus pruebas de detección.Por lo tanto, la biblioteca Hilt tiene HiltTestApplication
Class, y necesita configurar un nuevo corredor de prueba que use Hilt para probar la aplicación. Agregue un nuevo corredor de prueba en el bloque de configuración de Gradle.
Prueba eléctrica con robot
Si usa roboelectric para probar la capa de interfaz de usuario, puede especificar robolectric.properties
expediente:
application = dagger.hilt.android.testing.HiltTestApplication
También puede configurar Roboelectric con el siguiente comando @Config
anotación.
Ahora estamos listos para usar Hilt para inyectar dependencias en nuestra clase de prueba.Para inyectar el tipo en la prueba, use @Inject
Se utiliza para inyección en el sitio.Dile a Hilt que llene @Inject
Campo, llamar hiltRule.inject()
.
A veces, en las pruebas, las dependencias utilizadas en el código de producción pueden ser diferentes de las dependencias que desea agregar al código de prueba. En este caso, puede usar Hilt para hacer esto. Por ejemplo, en el código de producción, tiene un módulo similar al que se configura a continuación, que proporciona una dependencia.
En las pruebas, puede realizar operaciones similares reemplazando los módulos utilizados en producción, utilizando así Hilt para proporcionar dependencias falsas.
Pero si solo desea reemplazar este módulo de producción en una clase de prueba, puede hacerlo @UninstallModules
Anote y cree un nuevo módulo de prueba en la prueba.
Cuando Hilt crea un nuevo componente para la prueba utilizada
@UninstallModules
, Puede afectar significativamente el tiempo de construcción de la prueba de la unidad.Úselo cuando sea necesario y prefiera usar@TestInstallIn
Cuando necesite reemplazar enlaces en todas las clases de prueba.
Vincular nuevo valor
usar @BindValue
Realice anotaciones para vincular fácilmente los campos bajo prueba al gráfico de dependencia de Hilt.Anotar un campo @BindValue
Y estará vinculado a cualquier calificador que exista en el campo bajo el tipo de campo declarado.
adentro AnalyticsService
Por ejemplo, puede reemplazar AnalyticsService
Falso @BindValue.
Si no puedes usar HiltTestApplication
Debido a que su aplicación de prueba necesita ampliar otra aplicación, anote una nueva clase o interfaz @CustomTestApplication
, Y pase el valor de la clase base de la aplicación Hilt que desea generar.
@CustomTestApplication
Producirá un Application
Una clase que está lista para ser probada con Hilt, que amplía la aplicación que pasa como parámetro.
Espero que le resulte útil y que pueda expresar su gratitud compartiendo y siguiendo.
https://developer.android.com/training/dependency-injection/hilt-testing#kotlin