Compose는 일반적인 테스트 프레임워크와 통합됩니다.
Espresso와의 상호 운용성
하이브리드 앱에서는 뷰 계층 구조 내에서 Compose 구성요소를 찾을 수 있고
Compose 컴포저블 내의 뷰 (AndroidView
컴포저블을 통해)
두 유형을 일치시키기 위해 특별한 단계가 필요하지는 않습니다. 조회수 일치
Espresso의 onView
와 ComposeTestRule
를 사용한 Compose 요소
@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()))
}
UiAutomator와의 상호 운용성
기본적으로 컴포저블은 UiAutomator를 통해서만 액세스할 수 있습니다.
편리한 설명어 (표시된 텍스트, 콘텐츠 설명 등)를 사용합니다. 원하는 경우
Modifier.testTag
를 사용하는 컴포저블에 액세스하려면
특정 컴포저블의 시맨틱 속성 testTagsAsResourceId
하위 트리에 저장됩니다. 이 동작을 사용 설정하면 코드가 없는 컴포저블에 유용합니다.
스크롤 가능한 컴포저블과 같은 다른 고유한 핸들 (예: LazyColumn
)
컴포저블 계층 구조에서 높은 위치에 한 번만 시맨틱 속성을 사용 설정하여
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
}
}
Modifier.testTag(tag)
가 있는 모든 컴포저블은 다음을 사용하여 액세스할 수 있습니다.
resourceName
와 동일한 tag
를 사용하여 By.res(resourceName)
의 값을 업데이트합니다.
val device = UiDevice.getInstance(getInstrumentation())
val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.
추가 리소스
- Android에서 앱 테스트: 기본 Android 테스트 테스트의 기본사항과 기술을 보다 폭넓게 파악할 수 있습니다.
- 테스트 기본 요소: 자세히 알아보기 Android 앱 테스트의 핵심 개념을 배웠습니다.
- 로컬 테스트: 일부 테스트를 실행할 수 있습니다. 실행할 수 있습니다
- 계측 테스트: 우수함 연습을 해야 합니다 즉, Cloud Build를 사용해 해야 합니다.
- 지속적 통합: 지속적 통합을 통해 테스트를 배포에 통합할 수 있음 살펴봤습니다
- 다양한 화면 크기 테스트: 사용자에게 제공할 수 있는 여러 기기이므로 다양한 화면용으로 테스트해야 합니다. 있습니다.
- Espresso: 뷰 기반 UI, Espresso 지식은 Compose의 일부 측면에 여전히 유용할 수 있음 있습니다.