如何为Gradle运行测试的JVM传递参数?
解决Gradle test任务配置JVM参数的错误
首先明确回答你的初始疑问:Gradle的test任务默认会启动一个独立的JVM来执行测试,所以你想要给测试JVM传递参数的思路是完全正确的,只是配置的位置出了问题。
你遇到的错误Could not find method jvmArgs()... on source set 'test',原因是你把jvmArgs放到了groovy源码集的配置闭包里——jvmArgs是Test任务本身的属性,不属于源码集(SourceSet)的配置项,所以Gradle找不到这个方法。
下面是修正后的build.gradle配置代码:
test { // 直接在test任务闭包里配置JVM参数 jvmArgs '-agentpath:/usr/lib/code_dependency_capturer.so' groovy { srcDirs = ['src/test'] if (!JavaVersion.current().isJava8Compatible()) { exclude '**/v8/*' exclude '**/vm8/*' } } resources { srcDirs = ['src/test-resources'] } }
关键说明:
jvmArgs必须直接定义在test任务的顶级闭包中,这样Gradle才会识别这是给测试JVM传递的参数。- 你原来的
groovy和resources源码集配置是正确的,继续保留在各自的闭包里即可。
如果后续你有多个测试任务(比如integrationTest),想要给不同任务的JVM传递参数,只需要在对应任务的闭包里添加jvmArgs配置就行,逻辑和上面一致。
内容的提问来源于stack exchange,提问作者nail fei
相关产品推荐
相关产品推荐

