Uiautomator 테스트
최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
2025년 8월 13일 | 2.3.0 | - | - | 2.4.0-alpha06 |
종속 항목 선언
테스트 관련 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle
파일에 필요한 아티팩트의 종속 항목을 추가합니다.
Groovy
dependencies { // Use to implement UIAutomator tests androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha06" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha06") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
Test Uiautomator Shell 버전 1.0
버전 1.0.0-alpha02
2025년 8월 13일
androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02
이 출시되었습니다. 버전 1.0.0-alpha02에는 이 커밋이 포함되어 있습니다.
버전 1.0.0-alpha01
2025년 6월 18일
androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01
이 출시되었습니다. 버전 1.0.0-alpha01에는 이 커밋이 포함되어 있습니다.
새로운 기능
- 셸 사용자로 셸 명령어를 실행하는 ui-automator 셸 라이브러리의 첫 번째 알파 버전 이 라이브러리를 사용하면 셸에서 실행한 sh 프로세스의 stdout, stderr을 읽고 stdin에 쓸 수 있습니다. 사실상 API 34에 도입된
UiAutomation#executeShellCommandRwe
를 백포트합니다.
버전 2.4
버전 2.4.0-alpha06
2025년 8월 13일
androidx.test.uiautomator:uiautomator:2.4.0-alpha06
이 출시되었습니다. 버전 2.4.0-alpha06에는 이 커밋이 포함되어 있습니다.
새로운 기능
- 다중 창 테스트 개선을 위해 창 기반 API가 추가되었습니다. 즉, 이제
UiDevice#findWindow
를 사용하여By.Window
팩토리 메서드로 빌드된ByWindowSelector
에 따라 특정UiWindow
를 찾을 수 있습니다. (I359c4, I40528, I8c963)
버전 2.4.0-alpha05
2025년 6월 18일
androidx.test.uiautomator:uiautomator:2.4.0-alpha05
이 출시되었습니다. 버전 2.4.0-alpha05에는 이 커밋이 포함되어 있습니다.
API 변경사항
UiObject2#waitForStable
이UiObject2#accessibilityNodeInfo#waitForStable()
의 바로가기로 추가됨
버전 2.4.0-alpha04
2025년 6월 4일
androidx.test.uiautomator:uiautomator:2.4.0-alpha04
이 출시되었습니다. 버전 2.4.0-alpha04에는 이 커밋이 포함되어 있습니다.
API 변경사항
- Compose와 함께 작동한다는 점을 명확히 하기 위해
onView
의 이름을onElement
로 바꿨습니다 (I53a3b, b/419006806).
버그 수정
waitForStableInActiveWindow
수정 (290457f1, b/420349130)
버전 2.4.0-alpha03
2025년 5월 20일
androidx.test.uiautomator:uiautomator:2.4.0-alpha03
이 출시되었습니다. 버전 2.4.0-alpha03에는 이러한 커밋이 포함되어 있습니다.
버그 수정
waitForStableInActiveWindow
가 일부 경우에 NPE를 발생시키는 문제 수정 (Ibf50f, b/417046391)
버전 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 변경사항
- 모든 검색을 제한할 표시 ID를 설정하는
Configurator#setDefaultDisplayId
를 추가했습니다 (Icdf17). - 편의를 위해
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-index) 정보를 노출하도록
UiObject2#getDrawingOrder
를 추가했습니다. (I5dfa4) - 보조 디스플레이의 회전을 가져오고, 설정하고, 고정하고, 고정 해제하는
UiDevice
메서드가 추가되었습니다. (I912cd)
버그 수정
- 스크롤 종료를 감지할 수 없는 경우
UiObject2#scrollUntil
에 재시도 추가 (Ibac6f) UiDevice
이 다시 생성된 경우 오래된Instrumentation
인스턴스를 사용하는 문제를 수정했습니다 (I18cae).- 노드 (Icafcb)를 덤프할 때 디스플레이 ID를 확인할 수 없는 경우 발생할 수 있는 NPE 수정
- 클릭/스크롤할 수 없는 객체에서 클릭/스크롤을 실행할 때 경고가 추가되었습니다 (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)
버그 수정
UiScrollable
메서드가 SDK 18~22에서 잘못된 좌표를 사용하는 경우가 수정되었습니다 (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)