Compose se integra en frameworks de prueba comunes.
Interoperabilidad con Espresso
En las apps híbridas, puedes encontrar los componentes de Compose dentro de las jerarquías de vistas.
dentro de los elementos componibles de Compose (a través del elemento componible AndroidView
)
No es necesario realizar pasos especiales para coincidir con alguno de los tipos. Haz coincidir las vistas con
onView
de Espresso y elementos de Compose con ComposeTestRule
@Test
fun androidViewInteropTest() {
// Check the initial state of a TextView that depends on a Compose state.
Espresso.onView(withText("Hello Views")).check(matches(isDisplayed()))
// Click on the Compose button that changes the state.
composeTestRule.onNodeWithText("Click here").performClick()
// Check the new value.
Espresso.onView(withText("Hello Compose")).check(matches(isDisplayed()))
}
Interoperabilidad con UiAutomator
De forma predeterminada, se puede acceder a los elementos componibles desde UiAutomator solo a través de su
descriptores convenientes (texto visible, descripción del contenido, etcétera) Si quieres
para acceder a cualquier elemento componible que use Modifier.testTag
, debes habilitar
la propiedad semántica testTagsAsResourceId
para el elemento componible específico
subárbol. Habilitar este comportamiento es útil para elementos componibles que no tienen ninguno
Otro controlador único, como elementos componibles desplazables (por ejemplo, LazyColumn
)
Habilita la propiedad semántica solo una vez alta en la jerarquía de tus elementos componibles para
asegúrate de que se pueda acceder a todos los elementos componibles anidados con Modifier.testTag
UiAutomator
Scaffold(
// Enables for all composables in the hierarchy.
modifier = Modifier.semantics {
testTagsAsResourceId = true
}
){
// Modifier.testTag is accessible from UiAutomator for composables nested here.
LazyColumn(
modifier = Modifier.testTag("myLazyColumn")
){
// Content
}
}
Se puede acceder a cualquier elemento componible con Modifier.testTag(tag)
con el uso
de By.res(resourceName)
con el mismo tag
que el resourceName
.
val device = UiDevice.getInstance(getInstrumentation())
val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.
Recursos adicionales
- Cómo probar apps en Android: Las pruebas principales de Android proporciona una visión más amplia de los fundamentos y las técnicas de prueba.
- Aspectos básicos de las pruebas: Más información sobre los conceptos básicos de prueba de una app para Android.
- Pruebas locales: Puedes ejecutar algunas pruebas. de forma local, en tu propia estación de trabajo.
- Pruebas instrumentadas: Es bueno. practicar para ejecutar también pruebas de instrumentación. Es decir, las pruebas que se ejecutan directamente en el dispositivo.
- Integración continua: La integración continua te permite integrar las pruebas en tu implementación. en una canalización de integración continua.
- Prueba diferentes tamaños de pantalla: algunos dispositivos disponibles para los usuarios, debes probar diferentes pantallas tamaños.
- Espresso: Aunque está diseñado para objetos View basados en IUs y el conocimiento de Espresso puede ser útil para algunos aspectos de Compose. y pruebas.