我有一个gradle文件(test.gradle(,该文件当前正在从XML文件中读取,该文件包含类名称以确定要运行的测试。从XML过滤要测试的类(进入菲利特(,然后使用Groovy的Ant.junit((运行。之所以这样做,主要是因为有单独的竹子代理需要进行特定的测试,这些测试是根据所提供的属性确定的。我想并行运行每个代理中的任务。Ant.Junit没有类似MaxParallElforks的选项来指定并行提出的JVM的确切数量。
目前正在发生的事情: - 在竹子中,test.gradle被更名为build.gradle。它带有所有类别的罐子,并将它们放入目标构建目录中。 - 有一项任务将基于竹配置中提供的属性的目标构建目录中的类(基于提供的XML(过滤(基于提供的XML(。 - 然后,蚂蚁使用以下内容运行测试:
batchtest(todir: "${testDir}") {
ant.filelist(dir: "${targetDir}/build", files:
filteredTests.join(","))
}
- ANT似乎没有选择一次运行的平行JVM叉数。我试图将这些测试移至Java,希望能够设置一个可以设置MaxParallElfork选项之类的JVM参数。或者只需在Gradle测试任务中运行Filetree,该任务取决于执行过滤的任务。我最好的选择是什么?
尝试的事情: - 我试图更改任务(将测试过滤到Filetree中并使用ANT运行的任务(将其类型用于测试。但这似乎不起作用。我的假设是因为没有项目结构,并且从未拉链的罐子中挑选的东西,因此测试任务不知道如何运行它们。 - 我尝试创建一个单独的Gradle测试任务(这取决于过滤任务(,其中将包括Filetree。但是运行似乎并没有从随附的测试中找到类。我是否需要提及需要挑选的目录?
假设您的XML就像
<tests>
<test>foo.bar.Test1</test>
<test>foo.bar.Test2</test>
</tests>
您可以做
之类的事情task unzipTestClasses(type:Copy) {
from zipTree('path/to/testClasses.zip')
into "$buildDir/testClasses"
}
task runTestClasses(type:Test) {
dependsOn 'unzipTestClasses'
testClassesDirs = "$buildDir/testClasses"
def root = new XmlSlurper().parse(file('path/to.xml'))
include root.tests.test.collect { "${it.text().replace('.', '/')}.class" }
}