ワンクリックで
mobile-testing
Android testing patterns with JUnit5, Mockk, Turbine, and Compose testing for unit, integration, and UI tests.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Android testing patterns with JUnit5, Mockk, Turbine, and Compose testing for unit, integration, and UI tests.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Core Android development patterns for Kotlin, including coroutines, lifecycle management, and functional programming idioms.
Apple Combine framework for reactive programming. Publishers, subscribers, operators, and error handling.
Pattern extraction and skill generation for mobile development sessions. Automatically learns from your coding patterns.
Instinct-based learning system with confidence scoring for mobile patterns. Automatically extracts and evolves patterns.
Core Data for iOS persistence. Data models, fetch requests, background contexts, and SwiftData migration.
Kotlin Coroutines and Flow patterns for structured concurrency, error handling, and async operations.
| name | mobile-testing |
| description | Android testing patterns with JUnit5, Mockk, Turbine, and Compose testing for unit, integration, and UI tests. |
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.