如何将args传递给使用Gradle运行测试的JVM

nai*_*fei 6 java gradle

我是Gradle新秀,我不确定Gradle在运行测试集时是否会启动新的JVM。

就像将JVM参数传递给Gradle测试任务一样,我想将一些参数传递给运行测试集的JVM。

我在build.gradle中添加了以下几行:

...
test {
    groovy {
        jvmArgs '-agentpath:/usr/lib/code_dependency_capturer.so' // add line
        srcDirs = ['src/test']
        if (!JavaVersion.current().isJava8Compatible()) {
            exclude '**/v8/*'
            exclude '**/vm8/*'
        }
    }
    resources {
        srcDirs = ['src/test-resources']
    }
}
...
Run Code Online (Sandbox Code Playgroud)

但这告诉我:

A problem occurred evaluating root project 'groovy'.
Could not find method jvmArgs() for arguments[-agentpath:/usr/lib/code_dependency_capturer.so] on source set 'test' of type org.gradle.api.internal.tasks.DefaultSourceSet. 
Run Code Online (Sandbox Code Playgroud)

我搜索了此错误,但未能解决。

Dre*_*nis 6

尝试设置jvmArgs封闭test任务的,而不要尝试将其设置为groovy

您收到的错误提示该错误jvmArgs不存在groovy

例:

...
test {
    jvmArgs '-agentpath:/usr/lib/code_dependency_capturer.so' // add line
    groovy {      
        srcDirs = ['src/test']
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

这只是一个猜测,因为我没有方便进行确认的gradle设置,但值得一试,因为jvmArgs它记录为test

https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html#org.gradle.api.tasks.testing.Test:jvmArgs