如何为测试启用“--enable-preview”?
How do I enable "--enable-preview" for tests?
如何在基于 Kotlin 的 Gradle 脚本中为测试启用“--enable-preview”?我几乎尝试了所有我能在网上找到的东西, 是最接近正确答案的。
我在 :test
任务
上仍然遇到以下错误
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'com.blabla.playground.AppTest'.
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53)
Caused by: java.lang.UnsupportedClassVersionError: Preview features are not enabled for com/blabla/playground/AppTest (class file version 58.65535). Try running with '--enable-preview'
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
按脚本是
plugins {
java
application
}
repositories {
jcenter()
}
dependencies {
implementation("com.google.guava:guava:28.2-jre")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.0")
}
application {
mainClassName = "com.blabla.playground.App"
}
java {
sourceCompatibility = JavaVersion.VERSION_14
targetCompatibility = JavaVersion.VERSION_14
}
tasks {
withType<Test>().all {
allJvmArgs.add("--enable-preview")
testLogging.showStandardStreams = true
testLogging.showExceptions = true
useJUnitPlatform {
}
}
withType<JavaExec>().all {
jvmArgs!!.add("--enable-preview")
}
withType<Wrapper>().all {
gradleVersion = "6.4.1"
distributionType = Wrapper.DistributionType.BIN
}
withType(JavaCompile::class.java).all {
options.compilerArgs.addAll(listOf("--enable-preview", "-Xlint:preview"))
}
jar {
manifest {
attributes("Main-Class" to "com.blabla.playground.App")
}
}
}
我错过了什么?
事实证明,您为 Test
任务配置标志的方式并没有真正将标志附加到 allJvmArgs
。
我设法通过像这样配置 Test
任务使其工作:
withType<Test>().all {
jvmArgs("--enable-preview")
}
或
withType<Test>().all {
allJvmArgs = listOf("--enable-preview")
}
然而,第二个选项可能不是更可取的,因为它将所有 JVM 参数替换为分叉进程(包括定义系统属性的参数、minimum/maximum 堆大小和 bootstrap 类路径)。第一个选项应该更可取。
如何在基于 Kotlin 的 Gradle 脚本中为测试启用“--enable-preview”?我几乎尝试了所有我能在网上找到的东西,
我在 :test
任务
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'com.blabla.playground.AppTest'.
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53)
Caused by: java.lang.UnsupportedClassVersionError: Preview features are not enabled for com/blabla/playground/AppTest (class file version 58.65535). Try running with '--enable-preview'
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
按脚本是
plugins {
java
application
}
repositories {
jcenter()
}
dependencies {
implementation("com.google.guava:guava:28.2-jre")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.0")
}
application {
mainClassName = "com.blabla.playground.App"
}
java {
sourceCompatibility = JavaVersion.VERSION_14
targetCompatibility = JavaVersion.VERSION_14
}
tasks {
withType<Test>().all {
allJvmArgs.add("--enable-preview")
testLogging.showStandardStreams = true
testLogging.showExceptions = true
useJUnitPlatform {
}
}
withType<JavaExec>().all {
jvmArgs!!.add("--enable-preview")
}
withType<Wrapper>().all {
gradleVersion = "6.4.1"
distributionType = Wrapper.DistributionType.BIN
}
withType(JavaCompile::class.java).all {
options.compilerArgs.addAll(listOf("--enable-preview", "-Xlint:preview"))
}
jar {
manifest {
attributes("Main-Class" to "com.blabla.playground.App")
}
}
}
我错过了什么?
事实证明,您为 Test
任务配置标志的方式并没有真正将标志附加到 allJvmArgs
。
我设法通过像这样配置 Test
任务使其工作:
withType<Test>().all {
jvmArgs("--enable-preview")
}
或
withType<Test>().all {
allJvmArgs = listOf("--enable-preview")
}
然而,第二个选项可能不是更可取的,因为它将所有 JVM 参数替换为分叉进程(包括定义系统属性的参数、minimum/maximum 堆大小和 bootstrap 类路径)。第一个选项应该更可取。