Uiautomator 테스트
최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
2025년 5월 7일 | 2.3.0 | - | - | 2.4.0-alpha02 |
종속 항목 선언
테스트 관련 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle
파일에 필요한 아티팩트의 종속 항목을 추가합니다.
Groovy
dependencies { // Use to implement UIAutomator tests androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha02" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha02") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 2.4
버전 2.4.0-alpha02
2025년 5월 7일
androidx.test.uiautomator:uiautomator:2.4.0-alpha02
이 출시되었습니다. 버전 2.4.0-alpha02에는 이러한 커밋이 포함되어 있습니다.
새로운 기능
- 새
Uiautomator
API의 초기 형식입니다.UiAutomatorTestScope
는 새onView
API에 액세스할 수 있는 팩토리uiAutomator
를 통해 만들 수 있습니다. AccessibilityNodeInfo#getText
사용에 관한 경고를 제공하고textAsString
사용을 제안하는 초기 린트 규칙
API 변경사항
- 모든 검색을 (Icdf17)으로 제한하도록 디스플레이 ID를 설정하는
Configurator#setDefaultDisplayId
를 추가했습니다. - 편의를 위해
Searchable
(UiDevice
및UiObject2
에서 공유하는 인터페이스)를 공개로 변경했습니다. (I67f18)
버그 수정
UiDevice#pressKeyCodes
에서 메타 키 처리를 수정했습니다. (I73f80).- 항상 Z 순서로 루트를 반환하도록
UiDevice#getWindowRoots
를 업데이트했습니다. (I87426) - 특정 동작이 불완전하게 실행되는 문제를 수정했습니다. (I60dd3, If4edd)
UiDevice#scrollUntil
를 호출할 때 발생하는 드문 무한 루프를 수정했습니다. (I39989)
버전 2.4.0-alpha01
2024년 6월 26일
androidx.test.uiautomator:uiautomator:2.4.0-alpha01
이 출시되었습니다. 버전 2.4.0-alpha01에는 이 커밋이 포함되어 있습니다.
API 변경사항
- 텍스트가 키 누르기가 아닌 직접 삽입되므로 매개변수가 더 이상 사용되지 않으므로
Configurator#getKeyInjectionDelay
및setKeyInjectionDelay
를 지원 중단했습니다. (I3bcc5).
버그 수정
- 동적 화면 재생 빈도 (예: 스무스 디스플레이)를 고려하도록
UiObject2
모션 이벤트 간의 지연을 업데이트했습니다. (I43f12) - 접근성 캐시를 주기적으로 무효화하여 특정 UI의 접근성 노드 비활성 상태로 인한 불안정성을 줄였습니다 (I3be25).
- 비활성
UiObject2
에서toString
또는hashCode
를 호출할 때 발생하는StaleObjectException
를 수정했습니다. (I38ea1). - 불필요한
waitForIdle
호출을 건너뛰어UiWatcher
성능을 개선했습니다. (I8c65e). - 특히 각
Configurator
매개변수가 사용되는 시점을 명확히 하기 위해 javadoc 부정확성을 수정했습니다. (Ie10b1, I71631).
버전 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). - 새로운 선택기:
- 맞춤 조건: 맞춤 대기 조건을 지원하도록
Condition
인터페이스를 노출하고 상응하는UiDevice#wait
,UiObject2#wait
,UiObject2#scrollUntil
메서드 (27c0ea, 099d6e)를 추가했습니다. - 버그 수정 및 안정성
버전 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
비율 기반 여백 메서드의 이름을setGestureMarginPercentage
및setGestureMarginsPercentage
로 변경했습니다. (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.hasParent
및By.hasAncestor
를 추가했습니다. (I93c36) - 객체의 힌트 텍스트를 가져오는
UiObject2#getHint
와 힌트 텍스트에 따라 객체를 선택하는By.hint
메서드를 추가했습니다 (Idd345). By.displayId
를 추가하여 객체가 있는 디스플레이에 따라 객체를 선택할 수 있도록 지원했습니다 (I1825b).- 디스플레이의 크기를 ID (Ie6544)로 찾는
UiDevice#getDisplayHeight(int)
및UiDevice#getDisplayWidth(int)
메서드를 추가했습니다. - 이전 버전과의 호환성을 위해
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#wait
및UiObject2#wait
메서드를 업데이트했습니다 (27c0ea).- 조건이 충족될 때까지 스크롤을 지원하고
UiScrollable
와 동등성을 유지하기 위해UiObject2#scrollUntil
를 추가했습니다. (099d6e) - 기기 유형 간에 회전을 용이하게 하는
UiDevice#setOrientationPortrait
및setOrientationLandscape
를 추가했습니다. (e13cb7) - 객체 크기를 기준으로 여백을 설정할 수 있도록
UiObject2#setGestureMarginPercent
를 추가했습니다. (Ib8c77)
버그 수정
- SDK 18~22에서 가끔 잘못된 좌표를 사용하는
UiScrollable
메서드가 수정되었습니다. (b53ece) - SDK 18 및 19에서
UiObject2#setText
및clearText
가 텍스트를 수정하지 못하는 문제를 수정했습니다 (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#scrollForward
및scrollBackward
메서드가 구성된 제한 시간을 무시하는 문제를 수정했습니다. (29e4f3)BySelector
복사 생성자가 깊이 선택기를 처리하지 않는 문제를 수정했습니다. (6c7b91)UiObject#pinchIn
및pinchOut
에서 잘못된 백분율 값 처리 문제를 수정했습니다. (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_WAKEUP
과KEYCODE_SLEEP
을 사용하도록UiDevice#wakeUp
과UiDevice#sleep
을 업데이트했습니다. - 여러 디스플레이에서 객체를 찾고 관리하기 위해
UiObject2#getDisplayId
와 관련 지원을 추가했습니다. - 좌표를 사용하여 점을 클릭하는
UiObject#click
및UiObject2#clickAndWait
메서드를 추가했습니다.
버그 수정
- 디스플레이 크기가 잘못 계산되어 특히 멀티 윈도우 모드에서 화면의 일부가 무시될 수 있는 문제를 수정했습니다. (Ifc016c)
UiDevice#takeScreenshot
에서 발생하던 스크린샷 확장 문제를 수정했습니다. (Id80ad6)Until.scrollFinished
및UiObject2#scroll
의 안정성을 개선했습니다. (I7b0595)- 엄격 모드
IncorrectContextUseViolation
경고를 수정했습니다. (Iffa6a0)