android - 如何将 Kotlin 代码编译到 jvmTarget ="1.8"进行测试

标签 android gradle kotlin android-gradle-plugin junit5

在我们的 Android 项目中,我们使用 Kotlin 编码并以 Java 1.6 为目标。但是,由于某些 JUnit5 功能需要它(接口(interface)中的静态方法),我们在测试中被迫使用 java 1.8。

是否可以以不同于生产代码的方式编译测试?

我们试图通过将其添加到我们的 build.gradle 中将 jvmTarget 提高到 1.8:

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

这也提高了生产代码的 jvmTarget,但我们只希望它用于我们的测试。 Docs表明可以像这样为测试指定它:

compileReleaseUnitTestKotlin{
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

很遗憾,build.gradle 无法编译。

最佳答案

Kotlin 文档提到 how to do它仅用于测试。

常规 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"

关于android - 如何将 Kotlin 代码编译到 jvmTarget ="1.8"进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331113/

相关文章:

安卓电话号码

android - 如何从一个地方更改整个应用程序中的默认ClickSound

Android - 如何显示附近的用户标记?

java - 信任库中的 "Anchor for certification path not found"

android - 在 Android Studio 中引用其他模块中的 .apk 类

java - 将文件添加到Kotlin DSL中的Gradle sourceSets

java - Android OnClickListener 仅在第二次点击时触发

java - 尝试显示/取消隐藏 LinearLayout 时无法调用 setVisibility 方法

android - 检测 Android 中 rss feed 的编码

android - 无法获取未知属性 'sonatypeRepo'