如何使用 gradle kotlin dsl 设置单元测试 jvmargs

Mah*_*een 5 android gradle android-gradle-plugin gradle-kotlin-dsl

我正在尝试使用 kotlin-dsl 为单元测试设置 jvmargs,但我无法让它工作。

这样我就可以添加“-noverify”参数并允许 intellji 测试运行器收集代码覆盖率信息。

Groovy,作品:

testOptions {
        unitTests.all {
            jvmArgs '-noverify'
        }
    }
Run Code Online (Sandbox Code Playgroud)

科特林,不起作用:

testOptions {
        unitTests.all(KotlinClosure1<Any, Test>({
            (this as Test).also { jvmArgs("-noverify") }
        }, this))
    }
Run Code Online (Sandbox Code Playgroud)

这个也是:

testOptions {
        unitTests.all(KotlinClosure1<Any, Test>({
            (this as Test).also { jvmArgs = listOf("-noverify") }
        }, this))
    }
Run Code Online (Sandbox Code Playgroud)

似乎没有任何效果,我错过了什么?

小智 10

这个问题有点老了,但想发布 2021 年更新的 Kotlin DSL 版本:

testOptions.unitTests.all { it.jvmArgs("-noverify") }
Run Code Online (Sandbox Code Playgroud)


小智 8

我也有同样的问题。以下代码片段有效。

tasks.withType<Test>().all {
    jvmArgs("-noverify")
}
Run Code Online (Sandbox Code Playgroud)

参考 - https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/Test.html#jvmArgs-java.lang.Object...-

使用 Gradle-5.1.-all 版本进行验证