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.
How 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.
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.
npx claudepluginhub ahmed3elshaer/everything-claude-code-mobile --plugin everything-claude-code-mobileGuides Android testing with Unit, Hilt Integration, and Screenshot tests using Roborazzi. Covers dependency setup, test rules, and execution commands.
Provides Kotlin testing patterns using Kotest, MockK, and Kover for TDD with property-based and coroutine testing.
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.