用途
该技能面向 Android 测试自动化,用于设计以 Espresso、UI Automator、Robolectric 和 Compose Testing 为核心的测试方案。适用场景包括规划设备矩阵、搭建仿真器 CI、迁移到 Compose 测试、截图测试以及自适应 UI 验证。
主要能力
- 测试分层:区分单元测试(JUnit + Mockito,运行于 JVM)、Robolectric(JVM 中模拟 Android 框架)、Espresso(Views 的仪器化 UI 测试)、Compose Testing(仪器化,或配合显式 Robolectric 配置在 JVM 运行)、自适应 UI 测试(Espresso Device API + DeviceConfigurationOverride)、截图测试(Compose Preview Screenshot Testing、Paparazzi、Roborazzi)以及系统级测试(UI Automator)。
- 快速参考命令:列出仿真器(
emulator -list-avds)、启动仿真器(emulator @<avd_name>)、列出设备(adb devices)、安装 APK(adb install -r <path-to-apk>)、运行单元测试(./gradlew test)、运行已连接的仪器化测试(./gradlew connectedAndroidTest)、运行 GMD 仪器化测试(./gradlew <device><variant>AndroidTest)、运行截图测试(./gradlew validateDebugScreenshotTest)、列出 GMD 任务(./gradlew tasks --all)、清除应用数据(adb shell pm clear <applicationId>)。 - 稳定性实践:在 PR 关卡默认使用仿真器,发布关键路径使用真机或设备农场;至少覆盖最低支持 API 与目标 API;使用
testOptions { animationsDisabled = true }、Android Test Orchestrator、IdlingResources、Compose 同步机制或waitUntil替代 sleep;使用 MockWebServer 或 DI 假实现替代真实后端;保持截图测试确定性(固定字体、语言、时钟、网络图片与种子数据)。 - 无障碍与自适应覆盖:将无障碍检查与高价值 Espresso/Compose 流程放在同一套件;显式验证 compact 与 expanded 布局;使用稳定选择器(Views 用
withId(),Compose 用testTag,UI Automator 用 resource-id 或 content descriptions)。
使用方式
推荐在 CI 中优先使用 build-managed devices(GMD),在套件与支持的 API 级别允许时使用 ATD 镜像;本地临时运行使用 connectedAndroidTest。若需要强隔离,启用 Android Test Orchestrator 与 clearPackageData。动画禁用应在 Gradle 层配置,而不是在测试流程中通过临时 ADB 步骤处理。截图测试作为独立的快速回归层:@Preview 覆盖用 Compose Preview Screenshot Testing,JVM 渲染用 Paparazzi 或 Roborazzi,仅在需要硬件保真度时使用基于设备的快照。
推荐的 Gradle 默认配置包括 animationsDisabled = true、execution = "ANDROIDX_TEST_ORCHESTRATOR",以及测试失败时启用仿真器快照(enableForTestFailures = true、maxSnapshotsForTestFailures = 2)。依赖中引入 androidTestUtil(libs.androidx.test.orchestrator)。若依赖仪器化测试之间的隔离,还需在 Gradle 或 CI 中设置 clearPackageData=true 等 runner 参数。
适用场景
- 规划 PR 关卡、每夜构建与发布流水线中的测试分层与设备矩阵。
- 将 Espresso 覆盖迁移到 Compose 测试,并把 ViewModel 独立测试(Turbine/MockK 针对 StateFlow)。
- 诊断 Android UI 测试不稳定问题,按七类根因分类:同步等待缺口、动画/过渡时序、语义树合并(Compose 特有)、测试间状态泄漏、Doze/App Standby/后台限制、渲染器/保真度差异、不确定的测试数据或时钟。
- 决定何时投入截图测试,以及何时使用真实设备或设备农场。
限制
资料未提供具体的官方发布页链接、收费信息或价格。平台版本表中只保留了兼容性规则,未给出具体版本号。设备或 API 市场份额数据需从自身分析来源获取,公开汇总统计会随时间和类别变化。UI Automator 部分内容在原文中截断,未完整提供。