用途
Android Testing Unit 用于在 Android 项目中编写快速、聚焦的单元测试,主要覆盖 reducer、use case、repository 以及生命周期安全的状态持有者。当请求涉及 Android 单元测试策略、ViewModel reducer 测试、repository 单元测试时,适合使用该技能。
主要能力
- 为 reducer 与格式化逻辑编写聚焦的本地单元测试。
- 为 use case、repository 编写单元测试。
- 覆盖生命周期安全的状态持有者。
- 在不使用 instrumentation 的情况下,模拟同步失败与权限拒绝分支。
- 将单元测试请求与 UI 测试或一般架构清理区分开。
使用方式
技能给出的工作流包括:界定风险面(正确性、安全性、性能、测试深度或发布自动化);选择仍能捕获可能回归的最窄验证策略;对工作流进行插桩,使失败可操作而非仅显示红色;在示例应用与打包输出上运行相关检查;用明确的后续工作与负责技能记录残余风险。
示例命令:
- 正常路径:
cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest && cd ../orbittasks-xml && ./gradlew :app:testDebugUnitTest - 边界情况:
cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest - 失败恢复:
python3 scripts/eval_triggers.py --skill android-testing-unit
当范围扩大时,可交接给 android-testing-ui、android-ui-states-validation。
适用场景
- 需要为 reducer、use case、repository 编写单元测试。
- 需要测试生命周期安全的状态持有者。
- 需要在不使用 instrumentation 的情况下覆盖同步失败、权限拒绝等分支。
- 需要将单元测试与 UI 测试、架构清理区分处理。
限制与护栏
- 优先在 CI 中使用可复现的检查,而非一次性本地操作。
- 失败时应给出精确的修复路径,而不是模糊的质量门禁。
- 示例与 fixture 中不得包含密钥、签名材料和生产凭据。
- 性能与安全工作应作为有证据的工程任务,而非口口相传。
- 反模式包括:增加测试但不增加信号;发布无人可复现的基准或安全扫描;将发布凭据硬编码到构建逻辑中;使用没有用户影响解释的合成指标。
完成清单
- 实现路径明确、最小,并绑定到正确的 Android 表面。
- 相关示例命令与基准提示已被执行或更新。
- 当请求跨越边界时,已记录到相邻技能的交接。
- 官方参考覆盖所选模式以及主要的迁移或故障排查路径。
官方参考
- https://developer.android.com/training/testing/local-tests
- https://developer.android.com/training/testing/fundamentals
- https://developer.android.com/topic/libraries/architecture/viewmodel
- https://kotlinlang.org/docs/jvm-test-using-junit.html