diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 05212a28f..b0d1195f6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -111,10 +111,10 @@ dependencies { kspTest(libs.hilt.compiler) testImplementation(projects.core.dataTest) - testImplementation(projects.core.datastoreTest) testImplementation(libs.hilt.android.testing) testImplementation(projects.sync.syncTest) testImplementation(libs.kotlin.test) + testImplementation(testFixtures(projects.core.datastore)) testDemoImplementation(libs.androidx.navigation.testing) testDemoImplementation(libs.robolectric) @@ -124,11 +124,11 @@ dependencies { androidTestImplementation(projects.core.testing) androidTestImplementation(projects.core.dataTest) - androidTestImplementation(projects.core.datastoreTest) androidTestImplementation(libs.androidx.test.espresso.core) androidTestImplementation(libs.androidx.compose.ui.test) androidTestImplementation(libs.hilt.android.testing) androidTestImplementation(libs.kotlin.test) + androidTestImplementation(testFixtures(projects.core.datastore)) baselineProfile(projects.benchmarks) } diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index 8c839fa8e..760f9e62b 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -40,6 +40,6 @@ dependencies { testImplementation(libs.kotlinx.coroutines.test) testImplementation(libs.kotlinx.serialization.json) - testImplementation(projects.core.datastoreTest) + testImplementation(testFixtures(projects.core.datastore)) testImplementation(projects.core.testing) } diff --git a/core/datastore-test/.gitignore b/core/datastore-test/.gitignore deleted file mode 100644 index 42afabfd2..000000000 --- a/core/datastore-test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/core/datastore-test/README.md b/core/datastore-test/README.md deleted file mode 100644 index 99cf13f1f..000000000 --- a/core/datastore-test/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# :core:datastore-test module -## Dependency graph -![Dependency graph](../../docs/images/graphs/dep_graph_core_datastore_test.svg) diff --git a/core/datastore-test/build.gradle.kts b/core/datastore-test/build.gradle.kts deleted file mode 100644 index 375b1d3d8..000000000 --- a/core/datastore-test/build.gradle.kts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -plugins { - alias(libs.plugins.nowinandroid.android.library) - alias(libs.plugins.nowinandroid.hilt) -} - -android { - namespace = "com.google.samples.apps.nowinandroid.core.datastore.test" -} - -dependencies { - implementation(libs.hilt.android.testing) - implementation(projects.core.common) - implementation(projects.core.datastore) -} diff --git a/core/datastore-test/src/main/AndroidManifest.xml b/core/datastore-test/src/main/AndroidManifest.xml deleted file mode 100644 index 51d0cfc2e..000000000 --- a/core/datastore-test/src/main/AndroidManifest.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - \ No newline at end of file diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts index 0d4ba37c5..cc4e53e1e 100644 --- a/core/datastore/build.gradle.kts +++ b/core/datastore/build.gradle.kts @@ -25,6 +25,9 @@ android { consumerProguardFiles("consumer-proguard-rules.pro") } namespace = "com.google.samples.apps.nowinandroid.core.datastore" + + @Suppress("UnstableApiUsage") + testFixtures.enable = true } dependencies { @@ -34,6 +37,7 @@ dependencies { implementation(projects.core.common) - testImplementation(projects.core.datastoreTest) testImplementation(libs.kotlinx.coroutines.test) + + testFixturesImplementation(libs.hilt.android.testing) } diff --git a/core/datastore-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/InMemoryDataStore.kt b/core/datastore/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/InMemoryDataStore.kt similarity index 100% rename from core/datastore-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/InMemoryDataStore.kt rename to core/datastore/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/InMemoryDataStore.kt diff --git a/core/datastore-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/TestDataStoreModule.kt b/core/datastore/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/TestDataStoreModule.kt similarity index 100% rename from core/datastore-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/TestDataStoreModule.kt rename to core/datastore/src/testFixtures/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/TestDataStoreModule.kt diff --git a/gradle.properties b/gradle.properties index 2e9d9fc30..4d5628b45 100644 --- a/gradle.properties +++ b/gradle.properties @@ -63,3 +63,8 @@ roborazzi.test.verify=true # Prevent uninstall app after instrumented tests # https://issuetracker.google.com/issues/295039976 android.injected.androidTest.leaveApksInstalledAfterRun=true + +# Test fixture introduction +# https://medium.com/@emartynov/android-project-test-fixtures-dec50c5d8533 +# TODO: Add real documentation +android.experimental.enableTestFixturesKotlinSupport=true \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 2b8c6e45c..919526d26 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -55,7 +55,6 @@ include(":core:data-test") include(":core:database") include(":core:datastore") include(":core:datastore-proto") -include(":core:datastore-test") include(":core:designsystem") include(":core:domain") include(":core:model")