mcpField
A
android-testing

android-testing

github.com/new-silvermoon测试与质量992844 次安装13 周前更新
代码仓库

关于 android-testing

android-testing 是面向 Android 应用开发者的测试指导技能,涵盖单元测试、集成测试和 Compose UI 截图测试。它提供依赖配置示例、Hilt 测试模式,以及录制和验证 Roborazzi 截图的 Gradle 命令。

主要功能

  1. 01说明单元、集成和 UI 测试
  2. 02展示 Hilt 依赖注入测试配置
  3. 03配置 Roborazzi 截图测试
  4. 04提供 Gradle 测试与截图命令

适用场景

  1. 01规划 Android 应用各层的测试策略
  2. 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 集成测试和截图测试。

测试金字塔

  1. 单元测试:速度快,隔离逻辑(ViewModel、Repository)。
  2. 集成测试:测试交互(Room DAO、Retrofit 与 MockWebServer)。
  3. 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 上运行(速度快),无需模拟器。

设置
  1. 在 libs.versions.toml 中添加插件:
    [plugins]
    roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" }
    
  2. 在模块的 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