앱의 UI를 테스트하여 Compose 코드의 동작이 올바른지 확인합니다. 이를 통해 오류를 조기에 발견하고 앱 품질을 개선할 수 있습니다.
Compose는 요소를 찾아 속성을 확인하고 사용자 작업을 실행하는 일련의 테스트 API를 제공합니다. API에는 시간 조작과 같은 고급 기능도 포함되어 있습니다. 이러한 API를 사용하여 앱 동작을 확인하는 강력한 테스트를 만드세요.
뷰
Compose 대신 뷰를 사용하는 경우 일반적인 Android에서 앱 테스트 섹션을 참고하세요.
특히 UI 테스트 자동화 가이드부터 시작하는 것이 좋습니다. 뷰를 사용할 때를 비롯하여 기기에서 실행되는 테스트를 자동화하는 방법을 설명합니다.
주요 개념
다음은 Compose 코드를 테스트하기 위한 몇 가지 주요 개념입니다.
- 시맨틱: Compose 테스트는 UI의 일부에 의미를 부여하고 UI 계층 구조와 함께 생성되는 시맨틱을 사용하여 UI와 상호작용합니다.
- 테스트 API: Compose는 요소를 찾고, 상태 및 속성에 관해 어설션을 실행하고, 사용자 상호작용을 시뮬레이션하는 작업을 실행하기 위한 테스트 API를 제공합니다.
- 동기화: 기본적으로 Compose 테스트는 UI와 자동으로 동기화되며, 어설션을 실행하거나 작업을 실행하기 전에 UI가 유휴 상태가 될 때까지 기다립니다.
- 상호 운용성: 하이브리드 앱에서 테스트는 Compose 및 뷰 기반 요소와 원활하게 상호작용하고 다른 테스트 프레임워크와 통합할 수 있습니다.
테스트 요약본
Compose에서 테스트에 관해 알아야 하는 모든 주요 주제에 관한 개요는 테스트 요약본을 참고하세요.
설정
Compose 코드를 테스트할 수 있도록 앱을 설정합니다.
먼저, UI 테스트가 포함된 모듈의 build.gradle
파일에 다음 종속 항목을 추가합니다.
// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")
이 모듈에는 ComposeTestRule
과 Android용 구현인 AndroidComposeTestRule
가 포함되어 있습니다. 이 규칙을 통해 Compose 콘텐츠를 설정하거나 활동에 액세스할 수 있습니다. 팩토리 함수(createComposeRule
또는 활동에 액세스해야 하는 경우 createAndroidComposeRule
)를 사용하여 규칙을 구성합니다. Compose의 일반적인 UI 테스트는 다음과 같습니다.
// file: app/src/androidTest/java/com/package/MyComposeTest.kt
class MyComposeTest {
@get:Rule val composeTestRule = createComposeRule()
// use createAndroidComposeRule<YourActivity>() if you need access to
// an activity
@Test
fun myTest() {
// Start the app
composeTestRule.setContent {
MyAppTheme {
MainScreen(uiState = fakeUiState, /*...*/)
}
}
composeTestRule.onNodeWithText("Continue").performClick()
composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
}
}
추가 리소스
- Android에서 앱 테스트: 기본 Android 테스트 방문 페이지에서는 테스트 기본사항과 기법을 더 폭넓게 살펴볼 수 있습니다.
- 테스트의 기본사항: Android 앱 테스트의 핵심 개념을 자세히 알아봅니다.
- 로컬 테스트: 일부 테스트는 자체 워크스테이션에서 로컬로 실행할 수 있습니다.
- 계측 테스트: 계측 테스트도 실행하는 것이 좋습니다. 즉, 기기에서 직접 실행되는 테스트입니다.
- 지속적 통합: 지속적 통합을 사용하면 테스트를 배포 파이프라인에 통합할 수 있습니다.
- 다양한 화면 크기 테스트: 사용자가 사용할 수 있는 기기가 많으므로 다양한 화면 크기를 테스트해야 합니다.
- Espresso: 뷰 기반 UI용이지만 Espresso 지식은 Compose 테스트의 일부 측면에도 유용할 수 있습니다.
Codelab
자세한 내용은 Jetpack Compose 테스트 Codelab을 참고하세요.
샘플
추천 서비스
- 참고: JavaScript가 사용 중지되어 있으면 링크 텍스트가 표시됩니다.
- Compose의 시맨틱
- Compose의 창 인셋
- 기타 고려사항