Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
ahmed3elshaer avatar

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)
At a glance

mobile-testing capabilities & compatibility

Capabilities
unit testing · ui testing · test coverage
Works with
github
Use cases
testing
From the docs

What mobile-testing says it does

Comprehensive testing for Android.
SKILL.md
npx skills add https://github.com/ahmed3elshaer/everything-claude-code-mobile --skill mobile-testing

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs26
repo stars60
Last updatedJune 14, 2026
Repositoryahmed3elshaer/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

SKILL.mdMarkdownGitHub ↗

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.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.