Неразрешенный эталонный котлинтест при использовании gradle kotlin dsl - PullRequest
0 голосов
/ 18 сентября 2018

Вот мой build.gradle.kts:

import org.jetbrains.kotlin.config.KotlinCompilerVersion

plugins {
    ...
}

android {
    compileSdkVersion(27)

    defaultConfig {
        ...
    }

    buildTypes {
        ...
    }

    sourceSets {
        getByName("main").java.srcDirs("src/main/java", "src/main/kotlin")
        getByName("test").java.srcDirs("src/test/java", "src/test/kotlin")
        getByName("androidTest").java.srcDirs("src/androidTest/java", "src/androidTest/kotlin")
    }

}

tasks.withType<Test> {
    useJUnitPlatform()
}

dependencies {
    implementation(kotlin("stdlib-jdk7", KotlinCompilerVersion.VERSION))
    implementation("com.android.support:appcompat-v7:27.1.1")

    ...

    //Test
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.1.1")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.1.1")

    androidTestImplementation("com.android.support.test:runner:1.0.2")
    androidTestImplementation("com.android.support.test.espresso:espresso-core:3.0.2")
    androidTestImplementation("android.arch.core:core-testing:1.1.1")

    testImplementation("io.kotlintest:kotlintest-runner-junit5:3.1.10")
    testImplementation("io.mockk:mockk:1.8.7")
}

При сборке с ./gradlew build ошибка не возникает, но если я использую указанный код из документа:

val test by tasks.getting(Test::class) {
    useJUnitPlatform { }
}

Я получаю следующую ошибку: Task with name 'test' not found in project ':app'.

Мой settings.gradle.kts:

include(":app")

Кто-нибудь знает, что здесь происходит? Странно, что AS может предложить мне автозаполнение, и все, но во время компиляции я получаю эту неразрешенную ссылку.

1 Ответ

0 голосов
/ 18 сентября 2018

Похоже, что ваша проблема с этим блоком,

tasks.withType<Test> {
    useJUnitPlatform()
}

Если вы не используете задачу test, вы можете просто удалить этот код и эту ошибкуисчезнет!


Редактировать:

Если вы хотите использовать задачу test.попробуйте вот так на уровне проекта build.gradle ,

tasks.register("test", Test::class) {
    useJUnitPlatform()
}
...