用途:在编写、修复或重构 Android/KMP 的 Kotlin 代码时,为 TDD 流程补充 Android 上下文。前提是必须遵循 superpowers:test-driven-development,本技能不替代其 Iron Law 与 RED-GREEN-REFACTOR 循环。
主要能力:说明 Android 三层测试模型,并建议选择能有效验证行为的最低层级。Unit 位于 src/test/,运行于 JVM,速度快,适合纯逻辑、ViewModel、UseCase、Repository;Integration 位于 src/test/ 并配合 Robolectric,运行于模拟 JVM,速度中等,适合 Room DAO、依赖 Context 的代码、Fragment 逻辑;Instrumented 位于 src/androidTest/,运行于真机或模拟器,速度慢,适合 Compose UI、真实数据库与端到端流程。
使用要点:优先手写 Fake 而非 mock 框架,Fake 实现真实接口并使用内存行为,便于阅读、复用且不受内部实现变化影响;仅在依赖无有意义状态、验证特定交互本身即为被测行为、或构造 Fake 需复制复杂外部库逻辑时使用 mock。断言库应匹配项目现有约定,无约定时询问用户,常见选项为 kotlin-test、Google Truth、Kotest matchers。协程测试统一使用 runTest,禁止 runBlocking;StateFlow/SharedFlow 可用 Turbine 收集;需注入 CoroutineDispatcher 以便测试。Compose UI 测试使用 createComposeRule() 或 createAndroidComposeRule(),并在生产 Composable 中使用 semantics/testTag 避免脆弱的文本选择器。Hilt 测试使用 @HiltAndroidTest 与 HiltAndroidRule;无仪器化的单元测试可用 @TestInstallIn 以 Fake 替换模块。Roborazzi 通过 Robolectric 在 JVM 运行截图测试,无需模拟器,可按加载、错误、成功、空状态各写一个。
Gradle 命令保持原样:./gradlew test、./gradlew :feature:login:test、./gradlew :feature:login:test --tests "com.example.login.LoginViewModelTest"、./gradlew connectedAndroidTest、./gradlew :feature:login:connectedAndroidTest、./gradlew recordRoborazziDebug、./gradlew verifyRoborazziDebug。
限制:资料未提供该技能的安装方式、收费与价格、平台支持范围或效果数据,暂未提供。