Как скомпилировать код Котлина в jvmTarget = "1.8" для тестов - PullRequest
0 голосов
/ 23 января 2019

В нашем проекте Android мы пишем код на Kotlin и нацеливаемся на Java 1.6.Однако мы вынуждены использовать java 1.8 в нашем тесте, поскольку некоторые функции JUnit5 требуют этого (статические методы в интерфейсах).

Возможно ли скомпилировать тесты иначе, чем производственный код?

Мы попытались поднять jvmTarget до 1,8, добавив это в наш build.gradle:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = "1.8"
        }
}

Это также поднимает jvmTarget производственного кода, но мы хотим его только для наших тестов., Документы указывают, что его можно указать для теста следующим образом:

compileReleaseUnitTestKotlin{
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

К сожалению, build.gradle не компилируется.

1 Ответ

0 голосов
/ 28 апреля 2019

В документации Kotlin упоминается как сделать это только для тестов.

Groovy DSL:

compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

Kotlin DSL:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

val compileTestKotlin: KotlinCompile by tasks

compileTestKotlin.kotlinOptions.jvmTarget = "1.8"
...