Help us improve
Share bugs, ideas, or general feedback.
From everything-claude-code-mobile
Provides Android testing patterns using JUnit5, Mockk, Turbine, and Compose for unit, integration, and UI tests including ViewModel, repository, and screen examples with 80% coverage target.
npx claudepluginhub ahmed3elshaer/everything-claude-code-mobile --plugin everything-claude-code-mobileHow this skill is triggered — by the user, by Claude, or both
Slash command
/everything-claude-code-mobile:mobile-testingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Comprehensive testing for Android.
Runs pass@k verification loops on Android unit (JUnit), UI (Espresso), and Compose tests to detect flakiness and ensure reliability before commits, pushes, or releases.
Provides Kotlin testing patterns using Kotest, MockK for mocking, coroutine and property-based tests, Kover coverage, and TDD workflows for unit testing and refactoring.
Guides Kotlin TDD testing with Kotest specs, MockK mocking, coroutine/property-based tests, Ktor testApplication, and Kover coverage.
Share bugs, ideas, or general feedback.
Comprehensive testing for Android.
// 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")
}
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)
}
}
}
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"
}
}
class HomeScreenTest {
@get:Rule
val rule = createComposeRule()
@Test
fun `displays items`() {
rule.setContent {
HomeContent(state = HomeState(items = listOf(item)))
}
rule.onNodeWithText(item.name).assertIsDisplayed()
}
}
./gradlew koverHtmlReport
Remember: Test behavior, not implementation. Write tests first.