La API de prueba de unidades de Glance te permite probar tu código de Glance sin aumentar las vistas ni necesitar un automatizador de IU. Por ejemplo, la API de pruebas de unidades te permite verificar condiciones, como si los elementos están en una lista o si se marcaron cuadros, con comparadores como hasContentDescriptionEqualTo
o isChecked
.
Esta API es liviana y requiere menos configuración, por lo que puedes realizar un desarrollo basado en pruebas mientras desarrollas partes individuales de tu widget y las organizas para mejorar la reutilización del código.
Configuración
Las dependencias necesarias para usar la biblioteca de pruebas de unidades se muestran en los siguientes ejemplos:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Estructura de la prueba
Organiza las funciones de componibilidad fuera de la clase GlanceAppWidget
para habilitar la reutilización de código y las pruebas de unidades. Reduce la complejidad de las unidades en prueba lo más posible.
class MyGlanceComposableTest {
@Test
fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
// Prepare inputs and state
setAppWidgetSize(100.dp, 100.dp)
// Set the composable under test
provideComposable {
MyNewsItemComposable(TEST_NEWS_ITEM)
}
// Perform assertions
onNode(hasTestTag("subTitle"))
.assertHasText(TEST_NEWS_ITEM.authorName)
}
}
Establece el contexto y el tamaño de la prueba
Si tu función componible lee el contexto con el método LocalContext.current()
, debes establecer un contexto con el método LocalContext.current()
.
De lo contrario, este paso es opcional.
Puedes usar cualquier framework de pruebas de unidades de Android basado en JVM, como Roboletric, para proporcionar el contexto.
Si tu función de componibilidad accede a LocalSize
, establece el tamaño previsto para la prueba antes de proporcionar un elemento componible en la prueba. El tamaño predeterminado es de 349 dp x 455 dp, que equivale a un widget de 5 x 4 que se muestra en un dispositivo Pixel 4 en modo vertical.
- Si tu AppWidget usa
sizeMode == Single
, puedes configurarlo enminWidth
yminHeight
en el archivoinfo.xml
del widget. - Si tu AppWidget usa
sizeMode == Exact
, puedes identificar los tamaños que se probarán de una manera similar a la forma en que determinas un tamaño para tu widget, y también identificar los tamaños horizontal y vertical en los que puede aparecer tu widget y probarlos. - Si tu AppWidget usa
sizeMode == Responsive
, puedes establecerlo en uno de los tamaños de la lista que proporcionas cuando especificassizeMode
.
La duración predeterminada de un tiempo de espera de prueba es de 1 segundo, pero puedes pasar una duración personalizada como argumento al método runGlanceAppWidgetUnitTest
si tu infraestructura de prueba aplica un tiempo de espera diferente.
Para obtener más información y ejemplos de código, consulta la documentación de referencia de runGlanceAppWidgetUnitTest
.