buildSrc/src/main/kotlin/AndroidTests.kt
changeset 19 91a3ad3b1b9c
parent 18 3ccb29f83309
child 20 5d8a0555733d
equal deleted inserted replaced
18:3ccb29f83309 19:91a3ad3b1b9c
    19  * You should have received a copy of the GNU General Public License
    19  * You should have received a copy of the GNU General Public License
    20  * along with Geekdroid.  If not, see <http://www.gnu.org/licenses/>.
    20  * along with Geekdroid.  If not, see <http://www.gnu.org/licenses/>.
    21  */
    21  */
    22 package com.geekorum.build
    22 package com.geekorum.build
    23 
    23 
       
    24 import com.android.build.api.dsl.CommonExtension
       
    25 import com.android.build.api.dsl.DefaultConfig
    24 import com.android.build.gradle.BaseExtension
    26 import com.android.build.gradle.BaseExtension
    25 import com.android.build.gradle.internal.dsl.TestOptions
    27 import com.android.build.gradle.internal.dsl.TestOptions
    26 import org.gradle.api.Project
    28 import org.gradle.api.Project
    27 import org.gradle.api.artifacts.Dependency
    29 import org.gradle.api.artifacts.Dependency
    28 import org.gradle.api.artifacts.DependencyConstraint
    30 import org.gradle.api.artifacts.DependencyConstraint
    32 import org.gradle.kotlin.dsl.closureOf
    34 import org.gradle.kotlin.dsl.closureOf
    33 import org.gradle.kotlin.dsl.configure
    35 import org.gradle.kotlin.dsl.configure
    34 import org.gradle.kotlin.dsl.dependencies
    36 import org.gradle.kotlin.dsl.dependencies
    35 import org.gradle.kotlin.dsl.kotlin
    37 import org.gradle.kotlin.dsl.kotlin
    36 
    38 
    37 const val espressoVersion = "3.2.0"
    39 const val espressoVersion = "3.5.0-alpha07" // alpha for this bug https://github.com/robolectric/robolectric/issues/6593
    38 const val androidxTestRunnerVersion = "1.3.0-alpha05"
    40 const val androidxTestRunnerVersion = "1.4.0"
    39 const val androidxTestCoreVersion = "1.3.0-alpha05"
    41 const val androidxTestCoreVersion = "1.4.0"
    40 const val robolectricVersion = "4.6.1"
    42 const val robolectricVersion = "4.8.2"
    41 
    43 
       
    44 private typealias BaseExtension = CommonExtension<*, *, DefaultConfig, *>
    42 
    45 
    43 /*
    46 /*
    44  * Configuration for espresso and robolectric usage in an Android project
    47  * Configuration for espresso and robolectric usage in an Android project
    45  */
    48  */
       
    49 @Suppress("UnstableApiUsage")
    46 internal fun Project.configureTests() {
    50 internal fun Project.configureTests() {
    47     extensions.configure<BaseExtension> {
    51     extensions.configure<BaseExtension>("android") {
    48         defaultConfig {
    52         defaultConfig {
    49             testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    53             testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    50             testInstrumentationRunnerArguments += mapOf(
    54             testInstrumentationRunnerArguments += mapOf(
    51                 "clearPackageData" to "true",
    55                 "clearPackageData" to "true",
    52                 "disableAnalytics" to "true"
    56                 "disableAnalytics" to "true"
    55 
    59 
    56         testOptions {
    60         testOptions {
    57             execution = "ANDROIDX_TEST_ORCHESTRATOR"
    61             execution = "ANDROIDX_TEST_ORCHESTRATOR"
    58             animationsDisabled = true
    62             animationsDisabled = true
    59 
    63 
    60             unitTests(closureOf<TestOptions.UnitTestOptions> {
    64             unitTests {
    61                 isIncludeAndroidResources = true
    65                 isIncludeAndroidResources = true
    62             })
    66             }
    63         }
    67         }
    64     }
    68     }
    65 
    69 
    66 
    70 
    67     dependencies {
    71     dependencies {
    86         // assertions
    90         // assertions
    87         dualTestImplementation("com.google.truth:truth:1.0")
    91         dualTestImplementation("com.google.truth:truth:1.0")
    88         dualTestImplementation("androidx.test.ext:truth:1.3.0-alpha01")
    92         dualTestImplementation("androidx.test.ext:truth:1.3.0-alpha01")
    89 
    93 
    90         // mock
    94         // mock
    91         testImplementation("io.mockk:mockk:1.12.0")
    95         testImplementation("io.mockk:mockk:1.13.2")
    92         androidTestImplementation("io.mockk:mockk-android:1.12.0")
    96         androidTestImplementation("io.mockk:mockk-android:1.13.2")
    93         testImplementation("org.robolectric:robolectric:$robolectricVersion")
    97         testImplementation("org.robolectric:robolectric:$robolectricVersion")
    94 
    98 
    95         constraints {
    99         constraints {
    96             dualTestImplementation(kotlin("reflect")) {
   100             dualTestImplementation(kotlin("reflect")) {
    97                 because("Use the kotlin version that we use")
   101                 because("Use the kotlin version that we use")