我有一个Gradle文件(test.gradle),该文件目前正在从包含类名的XML文件中读取,以确定要运行哪些测试。要测试的类从XML中过滤(到文件树中),然后使用groovy的ant.junit()运行。这主要是因为有单独的竹代理需要运行特定的测试,这是根据所提供的属性来确定的。我希望在每个代理中并行运行这些任务。ant.junit没有类似于maxParallelForks选项的东西来指定并行显示的JVM的确切数量。
目前正在发生的事情:-在竹子中,test.gradle被重命名为build.gradle。它用所有的类解压缩一个jar,并将它们放在目标构建目录中。-有一项任务可以过滤要测试的类(基于所提供的XML ),它将基于在竹配置中提供的属性的目标构建目录中的类筛选为文件树。-然后ant.junit使用以下方法运行测试:
batchtest(todir: "${testDir}") {
ant.filelist(dir: "${targetDir}/build", files:
filteredTests.join(","))
}尝试过:-我尝试将任务(将测试过滤为一个文件树并使用ant运行它们)类型更改为一个测试。但这似乎行不通。我的假设是,由于没有项目结构,而且事情是从解压缩的jar中挑选出来的,所以测试任务不知道如何运行它们。-我尝试创建一个单独的分级测试任务(它将依赖于筛选任务),它将包括fileTree。但是运行似乎没有从包含的测试中找到类。我需要提一下他们需要从哪里挑选的目录吗?
发布于 2019-07-31 08:26:39
假设您的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" }
} https://stackoverflow.com/questions/57279384
复制相似问题