关于 android-testing
android-testing 是面向 Android 应用开发者的测试指导技能,涵盖单元测试、集成测试和 Compose UI 截图测试。它提供依赖配置示例、Hilt 测试模式,以及录制和验证 Roborazzi 截图的 Gradle 命令。
主要功能
- 01说明单元、集成和 UI 测试
- 02展示 Hilt 依赖注入测试配置
- 03配置 Roborazzi 截图测试
- 04提供 Gradle 测试与截图命令
适用场景
- 01规划 Android 应用各层的测试策略
- 02为 Compose 界面添加截图回归检查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ new-silvermoon/ awesome-android-agent-skills --skill android-testing安装后在 Claude Code 中输入/android-testing确认已加载。
详细介绍
Android 测试策略
本技能提供有关测试现代 Android 应用的专业指导,灵感来自“Now in Android”。涵盖 单元测试、Hilt 集成测试和截图测试。
测试金字塔
- 单元测试:速度快,隔离逻辑(ViewModel、Repository)。
- 集成测试:测试交互(Room DAO、Retrofit 与 MockWebServer)。
- UI/截图测试:验证 UI 正确性(Compose)。
依赖项(libs.versions.toml)
确保配置了正确的测试依赖项。
[libraries]
junit4 = { module = "junit:junit", version = "4.13.2" }
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version = "1.1.5" }
espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version = "3.5.1" }
compose-ui-test = { group = "androidx.compose.ui", name = "ui-test-junit4" }
hilt-android-testing = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "hilt" }
roborazzi = { group = "io.github.takahirom.roborazzi", name = "roborazzi", version.ref = "roborazzi" }
使用 Roborazzi 进行截图测试
截图测试可确保 UI 的视觉表现不会发生回归。NiA 使用 Roborazzi,因为它在 JVM 上运行(速度快),无需模拟器。
设置
- 在
libs.versions.toml中添加插件:[plugins] roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" } - 在模块的
build.gradle.kts中应用插件:plugins { alias(libs.plugins.roborazzi) }
编写截图测试
@RunWith(AndroidJUnit4::class)
@GraphicsMode(GraphicsMode.Mode.NATIVE)
@Config(sdk = [33], qualifiers = RobolectricDeviceQualifiers.Pixel5)
class MyScreenScreenshotTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<ComponentActivity>()
@Test
fun captureMyScreen() {
composeTestRule.setContent {
MyTheme {
MyScreen()
}
}
composeTestRule.onRoot()
.captureRoboImage()
}
}
Hilt 测试
使用 HiltAndroidRule 在测试中注入依赖项。
@HiltAndroidTest
class MyDaoTest {
@get:Rule
var hiltRule = HiltAndroidRule(this)
@Inject
lateinit var database: MyDatabase
private lateinit var dao: MyDao
@Before
fun init() {
hiltRule.inject()
dao = database.myDao()
}
// ... tests
}
运行测试
- 单元测试:
./gradlew test - 截图:
./gradlew recordRoborazziDebug(用于录制)/./gradlew verifyRoborazziDebug(用于验证)
评论
支持 Markdown