Add an architecture.android.unit.test convention plugin that runs local unit tests on the JUnit5 platform via useJUnitPlatform() (AndroidUnitTest extends Gradle's Test) + the unit-test bundle. Deliberately NOT using the de.mannodermaus plugin (targets AGP 8.x; we're on AGP 9). Add junit-platform-launcher (Gradle 9 dropped the bundled launcher); set the instrumentation runner; add a compose-ui-test bundle pinning espresso/runner to current versions (transitive espresso 3.5.0 calls the removed InputManager.getInstance() on API 34+). CI now runs ./gradlew test and compiles the instrumented tests. Drop unused testing catalog entries.
26 lines
1.1 KiB
Kotlin
26 lines
1.1 KiB
Kotlin
plugins {
|
|
alias(libs.plugins.architecture.android.library)
|
|
alias(libs.plugins.architecture.koin)
|
|
alias(libs.plugins.architecture.android.unit.test)
|
|
}
|
|
|
|
// UI-agnostic presentation: the MVI ViewModel + State/Action/Event live here and are shared by
|
|
// BOTH the Compose and the Views renderers. No Compose, no Views dependencies on purpose.
|
|
android {
|
|
namespace = "com.example.architecture.feature.characters.presentation"
|
|
}
|
|
|
|
dependencies {
|
|
implementation(project(":core:domain"))
|
|
implementation(project(":core:presentation"))
|
|
implementation(project(":feature:characters:domain"))
|
|
|
|
implementation(libs.androidx.lifecycle.viewmodel.ktx)
|
|
implementation(libs.androidx.lifecycle.viewmodel.savedstate)
|
|
implementation(libs.kotlinx.coroutines.android)
|
|
// Stable collection for state — makes the list Compose-stable WITHOUT a Compose dependency,
|
|
// so this module stays UI-agnostic (no @Stable annotation, which would require compose-runtime).
|
|
// `api` because CharacterListState.characters exposes ImmutableList in the public state API.
|
|
api(libs.kotlinx.collections.immutable)
|
|
}
|