在我们的Android项目中,我们使用Kotlin进行编码,并以Java 1.6为目标。但是,由于某些JUnit5功能需要使用Java 1.8(接口中的静态方法),因此我们不得不在测试中使用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
无法编译。
答案 0 :(得分:0)
Kotlin文档仅how to do提及它用于测试。
Groovy DSL:
np.multiply.reduce(..., axis=1)
科特琳DSL:
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
答案 1 :(得分:0)
此代码段为我完成了工作:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) {
if (it.name.contains("UnitTest")) {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
我不得不说,这不是根据测试任务的名称过滤测试任务的最佳解决方案,因此可以将其视为快速而肮脏的帮助。