Compose 레이아웃 테스트

앱의 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을 참고하세요.

샘플