Android Test Writer
Android Testing Standards

Write Android unit, Compose UI, and Hilt-integrated tests. Use when designing test behavior with MockK or coroutine test utilities; defer database/WorkManager-specific recipes to the owning feature skill.
---
name: android-testing
description: Write Android unit, Compose UI, and Hilt-integrated tests. Use when designing test behavior with MockK or coroutine test utilities; defer database/WorkManager-specific recipes to the owning feature skill.
metadata:
triggers:
files:
- '**/*Test.kt'
- '**/*Rule.kt'
keywords:
- "@Test"
- runTest
- composeTestRule
- HiltAndroidTest
- MockK
- createAndroidComposeRule
- MainDispatcherRule
- "@TestInstallIn"
---Overview
Qualitative reasoning framework to evaluate unit test value: - Protection against Regressions: Catches real defects; a test passing during failure offers zero protection. - Resistance to Refactoring: Decoupled from internal implementation; zero false alarms on internal refactorings. - Fast Feedback: Executes in milliseconds; rapid local TDD feedback loop. - Maintainability: Clean AAA structure, high readability, zero boilerplate duplication. Avoid inventing arbitrary numeric scores (e.g. P R F * M) statically without empirical measurement.
Manual install (npx, ZIP)
npx skills add HoangNguyen0403/agent-skills-standard --skill android-testing -g -a claude-codenpx degit HoangNguyen0403/agent-skills-standard/skills/android/android-testing#develop ~/.claude/skills/android-testingConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md3.5 KB
Read SKILL.md here
Show the full text62 lines
Android Testing Standards
Priority: P0 (CRITICAL)
The Four-Pillar Test Value Framework
Qualitative reasoning framework to evaluate unit test value:
- Protection against Regressions: Catches real defects; a test passing during failure offers zero protection.
- Resistance to Refactoring: Decoupled from internal implementation; zero false alarms on internal refactorings.
- Fast Feedback: Executes in milliseconds; rapid local TDD feedback loop.
- Maintainability: Clean AAA structure, high readability, zero boilerplate duplication. Avoid inventing arbitrary numeric scores (e.g. P * R * F * M) statically without empirical measurement.
Core Rule Anchors
[MOB-TEST-01]Tripartite Naming: Name testsMethod_Scenario_ExpectedBehavior(e.g.submitOrder_whenCreditLimitExceeded_displaysBlockedBanner).[MOB-TEST-02]State & ViewModel Invariant Rule: Assert UI state transitions (e.g.StateFlow/UiStatevia Turbinetest {}); ban asserting 30-property boilerplate state copies.[MOB-TEST-03]Entity Invariant & Serialization Rule: Test calculations, validations, domain invariants, and non-trivial serialization/parsing or error mapping. Ban testing auto-generated code, trivial getters, or echo tests repeating literal assignments.[MOB-TEST-04]Contract Testing Rule: Repositories and data sources must be tested for contract compliance and error mapping. Ban 1:1 pass-through mock echoing (coEvery { dataSource.get() } returns x; repo.get() == x).[MOB-TEST-05]Bug-First Regression Lock: Every PR fixing a bug ticket or with titlefix(...)must introduce a failing test reproducing the defect before fixing it.
Implementation Guidelines
Unit Tests
- Scope & Async: ViewModels, Usecases, Repositories, Utils. Use
runTestwithMainDispatcherRule. Mock with MockK or fakes. - Coverage: Coverage is diagnostic and project-configured; verify risk-weighted critical paths rather than padding code for an arbitrary percentage.
UI Integration Tests (Instrumentation)
- Scope & DI: Composable Screens, Navigation flows. Use
createAndroidComposeRule+ Hilt (HiltAndroidRule). Fake repositories via@TestInstallIn. - Negative Assertions: Add negative assertions only when absence is part of the business contract.
Anti-Patterns & Banned Smells
[MOB-TEST-01]Vague names: Banish non-descriptive test names.[MOB-TEST-02]Brittle state copies: Ban asserting 30-property boilerplate state copies; use focused state assertions or Turbine.[MOB-TEST-03]Echo tests: Ban testing auto-generated code, trivial getters, or repeating literal assignments.[MOB-TEST-04]Pass-through mock echoing: Ban 1:1 pass-through mock echoing and shallow assertions without contract checks.[MOB-TEST-05]Missing bug reproduction: Ban bug fix PRs without reproduction tests.- No Real Network / Thread.sleep: Fake repositories in DI; use IdlingResource or
composeTestRule.waitUntilfor async timing.
References
| 1 | |
| 2 | name android-testing |
| 3 | description Write Android unit, Compose UI, and Hilt-integrated tests. Use when designing test behavior with MockK or coroutine test utilities; defer database/WorkManager-specific recipes to the owning feature skill. |
| 4 | metadata |
| 5 | triggers |
| 6 | files |
| 7 | - '**/*Test.kt' |
| 8 | - '**/*Rule.kt' |
| 9 | keywords |
| 10 | - "@Test" |
| 11 | - runTest |
| 12 | - composeTestRule |
| 13 | - HiltAndroidTest |
| 14 | - MockK |
| 15 | - createAndroidComposeRule |
| 16 | - MainDispatcherRule |
| 17 | - "@TestInstallIn" |
| 18 | |
| 19 | # Android Testing Standards |
| 20 | |
| 21 | ## **Priority: P0 (CRITICAL)** |
| 22 | |
| 23 | ## The Four-Pillar Test Value Framework |
| 24 | |
| 25 | Qualitative reasoning framework to evaluate unit test value: |
| 26 | **Protection against Regressions**: Catches real defects; a test passing during failure offers zero protection. |
| 27 | **Resistance to Refactoring**: Decoupled from internal implementation; zero false alarms on internal refactorings. |
| 28 | **Fast Feedback**: Executes in milliseconds; rapid local TDD feedback loop. |
| 29 | **Maintainability**: Clean AAA structure, high readability, zero boilerplate duplication. |
| 30 | Avoid inventing arbitrary numeric scores (e.g. P * R * F * M) statically without empirical measurement. |
| 31 | |
| 32 | ## Core Rule Anchors |
| 33 | |
| 34 | **`[MOB-TEST-01]` Tripartite Naming**: Name tests `Method_Scenario_ExpectedBehavior` (e.g. `submitOrder_whenCreditLimitExceeded_displaysBlockedBanner`). |
| 35 | **`[MOB-TEST-02]` State & ViewModel Invariant Rule**: Assert UI state transitions (e.g. `StateFlow`/`UiState` via Turbine `test {}`); ban asserting 30-property boilerplate state copies. |
| 36 | **`[MOB-TEST-03]` Entity Invariant & Serialization Rule**: Test calculations, validations, domain invariants, and non-trivial serialization/parsing or error mapping. Ban testing auto-generated code, trivial getters, or echo tests repeating literal assignments. |
| 37 | **`[MOB-TEST-04]` Contract Testing Rule**: Repositories and data sources must be tested for contract compliance and error mapping. Ban 1:1 pass-through mock echoing (`coEvery { dataSource.get() } returns x; repo.get() == x`). |
| 38 | **`[MOB-TEST-05]` Bug-First Regression Lock**: Every PR fixing a bug ticket or with title `fix(...)` must introduce a failing test reproducing the defect before fixing it. |
| 39 | |
| 40 | ## Implementation Guidelines |
| 41 | |
| 42 | ### Unit Tests |
| 43 | **Scope & Async**: ViewModels, Usecases, Repositories, Utils. Use `runTest` with `MainDispatcherRule`. Mock with MockK or fakes. |
| 44 | **Coverage**: Coverage is diagnostic and project-configured; verify risk-weighted critical paths rather than padding code for an arbitrary percentage. |
| 45 | |
| 46 | ### UI Integration Tests (Instrumentation) |
| 47 | **Scope & DI**: Composable Screens, Navigation flows. Use `createAndroidComposeRule` + Hilt (`HiltAndroidRule`). Fake repositories via `@TestInstallIn`. |
| 48 | **Negative Assertions**: Add negative assertions only when absence is part of the business contract. |
| 49 | |
| 50 | ## Anti-Patterns & Banned Smells |
| 51 | |
| 52 | **`[MOB-TEST-01]` Vague names**: Banish non-descriptive test names. |
| 53 | **`[MOB-TEST-02]` Brittle state copies**: Ban asserting 30-property boilerplate state copies; use focused state assertions or Turbine. |
| 54 | **`[MOB-TEST-03]` Echo tests**: Ban testing auto-generated code, trivial getters, or repeating literal assignments. |
| 55 | **`[MOB-TEST-04]` Pass-through mock echoing**: Ban 1:1 pass-through mock echoing and shallow assertions without contract checks. |
| 56 | **`[MOB-TEST-05]` Missing bug reproduction**: Ban bug fix PRs without reproduction tests. |
| 57 | **No Real Network / Thread.sleep**: Fake repositories in DI; use IdlingResource or `composeTestRule.waitUntil` for async timing. |
| 58 | |
| 59 | ## References |
| 60 | |
| 61 | [Test Rules] |
| 62 |
Details
- License
- MIT
- Stars on the repo
- ★ 569
- Checked
- Source
- HoangNguyen0403/agent-skills-standard ↗
- Creator
- HoangNguyen0403 · 21 listings
Similar skills
See all →
SkilliOS Simulator Testing Scripts
SkillMoAI Autonomous Orchestrator
AgentVibe Testing
SkillFeature Testing Framework
SkillWeb App Tester
SkillDecision AdversaryMore from HoangNguyen0403
SkillArchitecture Diagram Designer
SkillCode Review Expert
SkillCybersecurity Framework Mapper
SkillDecision Discipline Framework
SkillFlutter Robot Pattern Tests
SkillGo Unit Test Builder