From android-dev
Guides Android testing with Unit, Hilt Integration, and Screenshot tests using Roborazzi. Covers dependency setup, test rules, and execution commands.
How this skill is triggered — by the user, by Claude, or both
Slash command
/android-dev:testingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides expert guidance on testing modern Android applications, inspired by "Now in Android". It covers **Unit Tests**, **Hilt Integration Tests**, and **Screenshot Testing**.
This skill provides expert guidance on testing modern Android applications, inspired by "Now in Android". It covers Unit Tests, Hilt Integration Tests, and Screenshot Testing.
libs.versions.toml)Ensure you have the right testing dependencies.
[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" }
Screenshot tests ensure your UI doesn't regress visually. NiA uses Roborazzi because it runs on the JVM (fast) without needing an emulator.
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()
}
}
Use HiltAndroidRule to inject dependencies in tests.
@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 (to record) / ./gradlew verifyRoborazziDebug (to verify)npx claudepluginhub p/hanamizuki-android-dev-plugins-android-devProvides Android testing patterns using JUnit5, Mockk, Turbine, and Compose for unit, integration, and UI tests including ViewModel, repository, and screen examples with 80% coverage target.
Designs and implements a full mobile testing strategy — unit, widget/component, E2E, API mocking, snapshot, CI integration, and flaky test management for React Native, Flutter, and iOS.
Guides Android native app development using Kotlin/Compose, Material Design 3, project configuration, accessibility, and build troubleshooting.