Uiautomator 테스트

  
교차 앱 기능 UI 테스트를 위한 프레임워크
최근 업데이트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
2024년 2월 21일 2.3.0 - - -

종속 항목 선언

테스트 관련 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

Groovy

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.3.0"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.3.0")
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

버전 2.3.0

버전 2.3.0

2024년 2월 21일

androidx.test.uiautomator:uiautomator:2.3.0가 출시되었습니다. 버전 2.3.0에 포함된 커밋을 확인하세요.

2.2.0 이후 중요 변경사항

  • 다중 디스플레이 지원: 여러 디스플레이에서 객체를 찾고 작동하기 위한 지원과 보조 디스플레이를 관리하는 UiDevice 메서드가 추가되었습니다. (Ie6544, I912cd)
  • 새 선택기:
    • 표시 ID로 객체를 선택하는 By.displayId를 추가했습니다. (I1825b)
    • 상위 요소에 따라 객체를 선택하는 By.hasParentBy.hasAncestor를 추가했습니다. (I93c36)
    • 힌트 텍스트로 객체를 선택하는 By.hint 메서드를 추가했습니다. (Idd345)
  • 커스텀 조건: 맞춤 대기 조건을 지원하기 위해 Condition 인터페이스를 노출하고 상응하는 UiDevice#wait, UiObject2#wait, UiObject2#scrollUntil 메서드를 추가했습니다. (27c0ea, 099d6e)
  • 버그 수정 및 안정성
    • 디스플레이 크기 계산이 때때로 부정확하고 화면의 일부를 무시할 수 있는 문제를 수정했습니다. (Ifc016) 테스트에 사용되는 좌표와 오프셋을 조정해야 할 수도 있습니다.
    • 정확성을 개선하고 (678ca3) 사용자 동작을 더 잘 에뮬레이션하도록 MotionEvent 삽입을 업데이트했습니다 (454450).
    • 스크롤 (I7b059), 회전 (c6cea0), 긴 클릭 (49572b), 손가락 모으기 (3c619a) 등의 안정성이 향상되었습니다.

버전 2.3.0-rc01

2024년 2월 7일

androidx.test.uiautomator:uiautomator:2.3.0-rc01은 변경사항 없이 출시되었습니다. 버전 2.3.0-rc01에 포함된 커밋을 확인하세요.

버전 2.3.0-beta01

2023년 12월 13일

androidx.test.uiautomator:uiautomator:2.3.0-beta01가 출시되었습니다. 버전 2.3.0-beta01에 포함된 커밋을 확인하세요.

API 변경사항

  • 일관성을 위해 UiObject2 백분율 기반 여백 메서드의 이름을 setGestureMarginPercentagesetGestureMarginsPercentage로 변경했습니다. (I24435)

버그 수정

  • 보조 디스플레이를 찾을 수 없거나 액세스할 수 없을 때 발생하는 오류를 개선했습니다. (116b23)

버전 2.3.0-alpha05

2023년 11월 1일

androidx.test.uiautomator:uiautomator:2.3.0-alpha05가 출시되었습니다. 버전 2.3.0-alpha05에 포함된 커밋을 확인하세요.

API 변경사항

  • 그리기 순서 (Z-색인) 정보를 노출하는 UiObject2#getDrawingOrder를 추가했습니다. 추가했습니다. (I5DFA4)
  • 보조 디스플레이의 회전을 가져오고 설정하고 고정하고 고정 취소하는 UiDevice 메서드를 추가했습니다. 추가했습니다. (I912cd)

버그 수정

  • 스크롤 끝을 감지할 수 없을 때 UiObject2#scrollUntil에 재시도를 추가했습니다. (Ibac6f)
  • UiDevice가 다시 생성되면 오래된 Instrumentation 인스턴스를 사용하는 문제가 수정되었습니다. (I18cae)
  • 노드를 덤프할 때 디스플레이 ID를 확인할 수 없는 경우 발생 가능한 NPE를 수정했습니다. (Icafcb)
  • 클릭할 수 없거나 스크롤할 수 없는 객체에서 클릭/스크롤을 실행할 때 경고가 추가되었습니다. (I4a5d9)
  • 안정성을 개선하기 위해 기본 UiObject2 스크롤 속도를 줄였습니다. (I5e071)

버전 2.3.0-alpha04

2023년 7월 26일

androidx.test.uiautomator:uiautomator:2.3.0-alpha04가 출시되었습니다. 버전 2.3.0-alpha04에 포함된 커밋을 확인하세요.

API 변경사항

  • 상위 요소에 따라 객체를 찾을 수 있도록 By.hasParentBy.hasAncestor를 추가했습니다. (I93c36)
  • 객체의 힌트 텍스트를 검색하는 UiObject2#getHint와 힌트 텍스트에 따라 객체를 선택하는 By.hint 메서드를 추가했습니다. (Idd345)
  • 현재 표시된 디스플레이에 따라 객체를 선택할 수 있도록 By.displayId를 추가했습니다. (I1825b)
  • ID로 디스플레이의 크기를 찾는 UiDevice#getDisplayHeight(int)UiDevice#getDisplayWidth(int) 메서드를 추가했습니다. (Ie6544)
  • 이전 버전과의 호환성을 위해 wait(SearchCondition, long)wait(UiObject2Condition, long) 메서드를 다시 추가했습니다. (Iebfda)
  • UiDevice#executeShellCommand를 공개로 변경했지만 숨김 대신 사용하지 않는 것이 좋습니다. (Ic48a1)

버그 수정

  • 속도보다 동작 정확성을 우선시하여 결함을 줄이도록 MotionEvent 삽입을 업데이트했습니다. (678ca3)
  • 성능 병목 현상을 식별하기 위해 리소스가 많은 메서드에 추적을 추가했습니다. (d17de3)
  • UiAutomation 연결을 시작할 때 재시도 메커니즘을 추가했습니다 (048caf).
  • UiDevice#dumpWindowHierarchy의 null 노드에서 가능한 NPE가 수정되었습니다. (b725eb)
  • 비공개 디스플레이에서 쿼리하거나 작동할 때 예상치 못한 오류가 수정되었습니다. (985db6, 7053d4)

버전 2.3.0-alpha03

2023년 4월 19일

androidx.test.uiautomator:uiautomator:2.3.0-alpha03가 출시되었습니다. 버전 2.3.0-alpha03에 포함된 커밋을 확인하세요.

API 변경사항

  • Until의 내장형에만 의존하는 대신 맞춤 대기 조건을 허용하는 Condition 인터페이스를 노출하고 이 인터페이스를 허용하도록 UiDevice#waitUiObject2#wait 메서드를 업데이트했습니다. (27c0ea)
  • 조건이 충족될 때까지 스크롤을 지원하고 UiScrollable와의 패리티에 도달하도록 UiObject2#scrollUntil를 추가했습니다. (099d6e)
  • 기기 유형 간 회전을 용이하게 하기 위해 UiDevice#setOrientationPortraitsetOrientationLandscape를 추가했습니다. (e13cb7)
  • 객체 크기를 기준으로 여백 설정을 지원하는 UiObject2#setGestureMarginPercent를 추가했습니다. 추가했습니다. (Ib8c77)

버그 수정

  • SDK 18~22에서 간혹 잘못된 좌표를 사용하는 UiScrollable 메서드가 수정되었습니다. (b53ece)
  • UiObject2#setTextclearText가 SDK 18 및 19에서 텍스트를 수정하지 못하는 문제를 수정했습니다. (77e41d)
  • UiWatcher가 올바른 순서로 실행되지 않는 문제를 수정했습니다. (c85f92)
  • UiDevice 방향 변경 후 기기 회전이 아직 완료되지 않을 수 있는 문제가 수정되었습니다. (c6cea0)
  • 긴 클릭, 드래그, 손가락 모으기의 안정성이 향상되었습니다 (49572b, 3c619a).

버전 2.3.0-alpha02

2023년 1월 11일

androidx.test.uiautomator:uiautomator:2.3.0-alpha02가 출시되었습니다. 버전 2.3.0-alpha02에 포함된 커밋을 확인하세요.

API 변경사항

  • 라이브러리 전반에서 로깅을 재작업하여 더 많은 정보를 제공하고 발생 가능한 문제를 경고하고 일관성을 개선했습니다.
  • 동시에 여러 키 누르기(예: POWER와 VOLUME_DOWN을 눌러 스크린샷 찍기)를 지원하는 UiDevice#pressKeyCodes를 추가했습니다. (22e525)
  • UiDevice#setCompressedLayoutHierarchy를 추가하고 UiDevice#setCompressedLayoutHeirarchy를 지원 중단하여 메서드 이름의 오타를 수정했습니다. (4e2f65)
  • UiAutomatorInstrumentationTestRunner는 지원 중단된 UiAutomatorTestCase를 처리하고 더 이상 필요하지 않으므로 지원 중단됨으로 표시했습니다. (be6c85)
  • 사용자 동작을 더 잘 에뮬레이션하도록 UiObject2 MotionEvent 간의 지연 시간을 화면 재생 빈도의 두 배로 업데이트했습니다. (454450)
  • 여러 줄 텍스트 및 설명 일치 지원을 추가했습니다. (1625e6, b/255787130)

버그 수정

  • 객체를 쿼리하거나 기다리는 동안 가끔 발생하는 StaleObjectException 문제를 수정했습니다. (4cbcc0)
  • UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning, flingToEnd의 반환 값이 시작/끝에 도달했는지 여부를 표시하지 않는 문제를 수정했습니다. (d33e06)
  • UiScrollable#scrollForwardscrollBackward 메서드가 구성된 제한 시간을 무시하는 문제를 수정했습니다. (29e4f3)
  • BySelector 복사 생성자가 깊이 선택기를 처리하지 않는 문제를 수정했습니다. (6c7b91)
  • UiObject#pinchInpinchOut에서 잘못된 백분율 값 처리 문제를 수정했습니다. (01b973)
  • 드물지만 기본 UiAutomation 연결이 재설정되면 멀티 윈도우 지원이 중단되는 문제를 수정했습니다. (1bb956)

버전 2.3.0-alpha01

2022년 9월 7일

androidx.test.uiautomator:uiautomator:2.3.0-alpha01가 출시되었습니다. 버전 2.3.0-alpha01에 포함된 커밋을 확인하세요.

API 변경사항

  • 모든 공개 메서드에 nullness 주석을 추가했습니다.
  • 더 원활한 UiObject2 동작을 위해 MotionEvent 삽입을 짧은 지연이 있는 비동기식으로 전환했습니다.
  • 기다리는 동안 폴링 간격을 1000ms에서 100ms로 줄였습니다.
  • 전원 버튼을 재정의하는 기기를 지원하기 위해 KEYCODE_WAKEUPKEYCODE_SLEEP을 사용하도록 UiDevice#wakeUpUiDevice#sleep을 업데이트했습니다.
  • 여러 디스플레이에서 객체를 찾고 관리하기 위해 UiObject2#getDisplayId와 관련 지원을 추가했습니다.
  • 좌표를 사용하여 점을 클릭하는 UiObject#clickUiObject2#clickAndWait 메서드를 추가했습니다.

버그 수정

  • 디스플레이 크기가 잘못 계산되어 특히 멀티 윈도우 모드에서 화면의 일부가 무시될 수 있는 문제를 수정했습니다. (Ifc016c)
  • UiDevice#takeScreenshot에서 발생하던 스크린샷 확장 문제를 수정했습니다. (Id80ad6)
  • Until.scrollFinishedUiObject2#scroll의 안정성을 개선했습니다. (I7b0595)
  • 엄격 모드 IncorrectContextUseViolation 경고를 수정했습니다. (Iffa6a0)