
Mobile Testing
- 26 installs
- 60 repo stars
- Updated June 14, 2026
- ahmed3elshaer/everything-claude-code-mobile
mobile-testing is a Claude Code skill that provides Android testing patterns with JUnit5, Mockk, Turbine, and Compose testing for unit, integration, and UI tests.
About
mobile-testing is a Claude Code skill that documents Android testing patterns. It covers test dependencies (JUnit5, Mockk, Turbine, Kotest, Compose testing) and concrete patterns for ViewModel, repository, and Compose UI tests. Developers use it when writing unit, integration, and UI tests for an Android app. It sets an 80% coverage target measured with Kover.
- Android test setup with JUnit5, Mockk, Turbine, and kotlinx-coroutines-test
- ViewModel, repository, and Compose UI test patterns
- Targets 80% coverage via Kover
Mobile Testing by the numbers
- 26 all-time installs (skills.sh)
- Ranked #1,382 of 2,153 Testing & QA skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
mobile-testing capabilities & compatibility
- Capabilities
- unit testing · ui testing · test coverage
- Works with
- github
- Use cases
- testing
What mobile-testing says it does
Comprehensive testing for Android.
npx skills add https://github.com/ahmed3elshaer/everything-claude-code-mobile --skill mobile-testingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 26 |
|---|---|
| repo stars | ★ 60 |
| Last updated | June 14, 2026 |
| Repository | ahmed3elshaer/everything-claude-code-mobile ↗ |
What it does
Write Android unit, integration, and Compose UI tests with JUnit5, Mockk, and Turbine against an 80% coverage target.
Who is it for?
Writing unit, repository, and Compose UI tests for an Android app
Skip if: iOS testing or non-Android test frameworks
When should I use this skill?
Adding or reviewing unit, integration, or UI tests in an Android project
What you get
The project has reliable ViewModel, repository, and Compose tests reaching an 80% coverage target
By the numbers
- Coverage target 80%
- Uses 6 test dependencies (JUnit5, Mockk, Turbine, coroutines-test, Kotest, Compose ui-test)
Files
Mobile Testing Patterns
Comprehensive testing for Android.
Test Dependencies
// build.gradle.kts
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
testImplementation("io.mockk:mockk:1.13.8")
testImplementation("app.cash.turbine:turbine:1.0.0")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0")
testImplementation("io.kotest:kotest-assertions-core:5.8.0")
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
debugImplementation("androidx.compose.ui:ui-test-manifest")
}ViewModel Testing
class HomeViewModelTest {
@MockK private lateinit var repository: HomeRepository
private lateinit var viewModel: HomeViewModel
@BeforeEach
fun setup() {
MockKAnnotations.init(this)
viewModel = HomeViewModel(repository)
}
@Test
fun `loads items successfully`() = runTest {
coEvery { repository.getItems() } returns Result.success(listOf(item))
viewModel.state.test {
viewModel.onIntent(LoadItems)
awaitItem().isLoading shouldBe true
awaitItem().items shouldBe listOf(item)
}
}
}Repository Testing
class UserRepositoryTest {
@MockK private lateinit var api: UserApi
private lateinit var repository: UserRepository
@Test
fun `getUser returns mapped domain model`() = runTest {
coEvery { api.getUser("1") } returns UserDto("1", "John")
val result = repository.getUser("1")
result.isSuccess shouldBe true
result.getOrNull()?.name shouldBe "John"
}
}Compose UI Testing
class HomeScreenTest {
@get:Rule
val rule = createComposeRule()
@Test
fun `displays items`() {
rule.setContent {
HomeContent(state = HomeState(items = listOf(item)))
}
rule.onNodeWithText(item.name).assertIsDisplayed()
}
}Coverage Target: 80%
./gradlew koverHtmlReport---
Remember: Test behavior, not implementation. Write tests first.
Related skills
FAQ
Which test libraries does it use?
JUnit Jupiter 5.10, Mockk 1.13.8, Turbine 1.0, kotlinx-coroutines-test, and Kotest assertions plus Compose ui-test.
How does it test StateFlow?
It uses Turbine's state.test { } to await emitted items such as isLoading and items.