
Android Testing
- 2 installs
- 910 repo stars
- Updated July 27, 2026
- new-silvermoon/awesome-android-skills
Covers an Android testing strategy across unit, Hilt integration, and Compose screenshot tests, inspired by Now in Android, with the right test dependencies.
About
Provides a testing-pyramid strategy for modern Android apps spanning unit tests, Hilt integration tests, MockWebServer, and Roborazzi screenshot tests. A developer uses it when setting up or expanding an Android test suite.
- Testing pyramid: unit, integration (Room/Retrofit+MockWebServer), UI/screenshot
- Roborazzi and Hilt testing dependency setup
Android Testing by the numbers
- 2 all-time installs (skills.sh)
- Ranked #942 of 1,039 Mobile Development skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/new-silvermoon/awesome-android-skills --skill android-testingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 910 |
| Last updated | July 27, 2026 |
| Repository | new-silvermoon/awesome-android-skills ↗ |
What it does
Covers an Android testing strategy across unit, Hilt integration, and Compose screenshot tests, inspired by Now in Android, with the right test dependencies.
Files
Android Testing Strategies
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.
Testing Pyramid
1. Unit Tests: Fast, isolate logic (ViewModels, Repositories). 2. Integration Tests: Test interactions (Room DAOs, Retrofit vs MockWebServer). 3. UI/Screenshot Tests: Verify UI correctness (Compose).
Dependencies (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 Testing with Roborazzi
Screenshot tests ensure your UI doesn't regress visually. NiA uses Roborazzi because it runs on the JVM (fast) without needing an emulator.
Setup
1. Add the plugin to libs.versions.toml:
[plugins]
roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" }2. Apply it in your module's build.gradle.kts:
plugins {
alias(libs.plugins.roborazzi)
}Writing a Screenshot Test
@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 Testing
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
}Running Tests
- Unit:
./gradlew test - Screenshots:
./gradlew recordRoborazziDebug(to record) /./gradlew verifyRoborazziDebug(to verify)