Compose lässt sich in gängige Test-Frameworks einbinden.
Interoperabilität mit Espresso
In einer hybriden Anwendung finden Sie
„Compose“-Komponenten in Ansichtshierarchien und
Ansichten in zusammensetzbaren Funktionen unter „Compose“ (über die zusammensetzbare Funktion AndroidView
) ansehen.
Es sind keine besonderen Schritte für die Übereinstimmung mit beiden Typen erforderlich. Sie abgleichen Aufrufe mit
onView
von Espresso und „Verfassen“-Elemente mit 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()))
}
Interoperabilität mit UiAutomator
Auf die zusammensetzbaren Funktionen kann in UiAutomator standardmäßig nur über die folgenden Gruppen zugegriffen werden:
Beschreibungen (angezeigter Text, Inhaltsbeschreibung usw.) Bei Bedarf
Um auf zusammensetzbare Funktionen zuzugreifen, in denen Modifier.testTag
verwendet wird, müssen Sie
Semantik-Attribut testTagsAsResourceId
für die jeweilige zusammensetzbare Funktion
Unterstruktur. Das Aktivieren dieses Verhaltens ist nützlich für zusammensetzbare Funktionen, die keine
Andere eindeutige Ziehpunkte wie scrollbare zusammensetzbare Funktionen (z. B. LazyColumn
)
Aktivieren Sie die semantische Eigenschaft nur einmal hoch in der Hierarchie der zusammensetzbaren Funktionen, um
dass alle verschachtelten zusammensetzbaren Funktionen mit Modifier.testTag
zugänglich sind
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
}
}
Jede mit dem Modifier.testTag(tag)
zusammensetzbare Funktion kann mit der Funktion
von By.res(resourceName)
mit derselben tag
wie resourceName
.
val device = UiDevice.getInstance(getInstrumentation())
val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.
Zusätzliche Ressourcen
- Apps unter Android testen: Hier werden die wichtigsten Android-Tests aufgeführt. Landingpage einen umfassenderen Überblick über die Grundlagen und Verfahren der Tests bietet.
- Testgrundlagen:Weitere Informationen Kernkonzepte beim Testen einer Android-App.
- Lokale Tests:Sie können einige Tests ausführen. lokal auf Ihrer eigenen Workstation.
- Instrumentierte Tests:Gut instrumentierte Tests durchführen. Das sind Tests, die direkt auf dem Gerät.
- Continuous Integration: Mit Continuous Integration können Sie Ihre Tests in Ihre Bereitstellung einbinden zu erstellen.
- Verschiedene Bildschirmgrößen testen:Mit Geräten verfügbar sind, sollten Sie auf verschiedenen Bildschirmen testen, Größen.
- Espresso: Nur für Aufrufe auf Basis von Aufrufen Benutzeroberflächen und Espresso-Kenntnisse können bei einigen Aspekten von „Compose“ hilfreich sein Tests durchführen.