UI Automator

UI Automator는 시스템과 설치된 앱 전반에 걸쳐 앱 간의 기능적 UI 테스트를 실행하기에 적합한 UI 테스트 프레임워크입니다.

UI Automator 테스트 프레임워크는 사용자 앱과 시스템 앱에 관한 상호작용을 실행하는 UI 테스트를 빌드하기 위한 API 세트를 제공합니다. UI Automator API를 사용하면 테스트 기기에서 Settings 메뉴 또는 앱 런처 열기와 같은 작업을 실행할 수 있습니다. UI Automator 테스트 프레임워크는 블랙박스 스타일의 자동화된 테스트를 작성하기에 매우 적합하며, 여기서는 테스트 코드가 타겟 앱의 내부 구현 세부정보에 의존하지 않습니다.

UI Automator 테스트 프레임워크의 주요 기능에는 다음이 포함됩니다.

  • 레이아웃 계층 구조를 검사하기 위한 뷰어. 자세한 내용은 UI Automator 뷰어를 참조하세요.
  • 타겟 기기에서 상태 정보를 검색하고 작업을 실행하기 위한 API. 자세한 내용은 기기 상태 액세스를 참조하세요.
  • 앱 간의 UI 테스트를 지원하는 API. 자세한 내용은 UI Automator API를 참조하세요.

UI Automator 뷰어

uiautomatorviewer 도구에서는 Android 기기에 현재 표시되는 UI 구성요소를 검사하고 분석하기에 편리한 GUI를 제공합니다. 이 도구를 사용하여 레이아웃 계층 구조를 검사하고 기기의 포그라운드에 표시되는 UI 구성요소의 속성을 볼 수 있습니다. 이 정보를 바탕으로 UI Automator를 사용하여 더욱 세분화된 테스트를 만들 수 있습니다. 예를 들어 표시되는 특정 속성과 일치하는 UI 선택기를 만듭니다.

uiautomatorviewer 도구는 <android-sdk>/tools/bin 디렉터리에 있습니다.

기기 상태 액세스

UI Automator 테스트 프레임워크는 타겟 앱이 실행 중인 기기에 액세스하여 작업을 실행하기 위한 UiDevice 클래스를 제공합니다. 현재 방향 또는 디스플레이 크기와 같은 기기 속성에 액세스하는 메서드를 호출할 수 있습니다. UiDevice 클래스로 다음과 같은 작업을 실행할 수도 있습니다.

  • 기기 회전 변경
  • '볼륨 업'과 같은 하드웨어 키 누르기
  • 뒤로 버튼, 홈 버튼 또는 메뉴 버튼 누르기
  • 알림 창 열기
  • 현재 창의 스크린샷 찍기

예를 들어 홈 버튼 누르기를 시뮬레이션하려면 UiDevice.pressHome() 메서드를 호출합니다.

UI Automator API

UI Automator API를 사용하면 타겟팅하는 앱의 구현 세부정보를 몰라도 강력한 테스트를 작성할 수 있습니다. 다음과 같은 API를 사용하여 여러 앱에 걸쳐 UI 구성요소를 캡처하고 조작할 수 있습니다.

  • UiCollection: 표시되는 텍스트 또는 콘텐츠 설명 속성별로 하위 요소를 카운트하거나 타겟팅할 목적으로 컨테이너의 UI 요소를 열거합니다.
  • UiObject: 기기에 표시되는 UI 요소를 나타냅니다.
  • UiScrollable: 스크롤 가능한 UI 컨테이너에 있는 항목을 검색하기 위한 지원 기능을 제공합니다.
  • UiSelector: 기기에 있는 하나 이상의 타겟 UI 요소에 관한 쿼리를 나타냅니다.
  • Configurator: UI Automator 테스트를 실행하기 위한 주요 매개변수를 설정할 수 있습니다.

예를 들어 다음 코드는 기기의 기본 앱 런처를 표시하는 테스트 스크립트 작성 방법을 보여줍니다.

Kotlin

    device = UiDevice.getInstance(getInstrumentation())
    device.pressHome()

    // Bring up the default launcher by searching for a UI component
    // that matches the content description for the launcher button.
    val allAppsButton: UIObject = device.findObject(
            UiSelector().description("Apps"))

    // Perform a click on the button to load the launcher.
    allAppsButton.clickAndWaitForNewWindow()
    

자바

    device = UiDevice.getInstance(getInstrumentation());
    device.pressHome();

    // Bring up the default launcher by searching for a UI component
    // that matches the content description for the launcher button.
    UiObject allAppsButton = device
            .findObject(new UiSelector().description("Apps"));

    // Perform a click on the button to load the launcher.
    allAppsButton.clickAndWaitForNewWindow();
    

UI Automator 사용 방법을 자세히 알아보려면 API 참조여러 앱의 UI 테스트 가이드를 참조하세요.

참고 자료

Android 테스트에서 UI Automator를 사용하는 방법에 관한 자세한 내용은 다음 자료를 참조하세요.

샘플