Skip to main content

android-testing

Comprehensive testing strategy involving Unit, Integration, Hilt, and Screenshot tests.

Quellinformationen

Repository
maxrave-dev/SimpMusic
Letzte Quellaktivität
5. März 2026 um 02:43
Erkannte Sprache von SKILL.md
Englisch
Sterne
13.045
Forks
734

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
android-testing
description
Comprehensive testing strategy involving Unit, Integration, Hilt, and Screenshot tests.
# 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. ```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" } ``` ## 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`: ```toml [plugins] roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" } ``` 2. Apply it in your module's `build.gradle.kts`: ```kotlin plugins { alias(libs.plugins.roborazzi) } ``` ### Writing a Screenshot Test ```kotlin @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. ```kotlin @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)
Auf GitHub ansehen