单元测试(Unit Test)
需访问业务类、ViewModel、Repository 等源码。
- 针对与 Android 框架无关的业务逻辑(如 ViewModel、Repository、DAO 等)。
- 使用 JUnit、Mockito/Mockk、Robolectric 等工具。
- 场景包括数据处理、业务分支、边界条件验证。
UI 行为测试(UI Behavior Test)
基于 ComposeTestRule 或 Espresso,都需要工程源码。
- 适用于 Compose UI 或传统 View 布局。
- 使用 ComposeTestRule、Espresso 进行组件/交互测试。
- 场景包括按钮点击、UI 状态切换、回退操作验证。
数据库测试
针对 Room/SQLite 数据层单元测试,须直接访问存储层代码。
- 针对 Room、SQLite 等持久化方案进行插入/查询/删除等功能验证。
- 多用内存数据库模拟业务流程,确保数据一致性。
屏幕截图测试(Screenshot Test)
某些方案可黑盒抓取界面截图,无需源码。例如 Dropshots 在 instrumented 环境可作用于已装 app。
绝大部分需源码支持,才能对控件或页面生成快照。
- 用于检测 UI 多主题、不同分辨率、字体缩放等情况下的渲染一致性。
- 支持组件级、页面级截图回归。常用 Paparazzi, Dropshots, Roborazzi 等。
导航测试(Navigation tests)
常基于源码和本地测试框架。
- 检查应用的导航流程、返回栈、深链(Deep Links)等跳转是否正常。
- 场景包括多页面切换、界面后退、外部链接接入。
覆盖率统计(Coverage Measurement)
需参与工程构建/测试流程和源码插桩。
- 本地通过 Jacoco 等工具统计代码与用例覆盖率,评估测试充分性。
端到端测试(End-to-End Test/E2E)
- 利用 UIAutomator/Appium/Robotium 进行完整用户旅程自动化,涵盖系统级 UI(如通知、PIP、多窗口)。
- 场景如启动-登录-支付-退出全流程回归,系统弹窗/授权/设置操作等。