首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Gradle中从FileTree运行Junit测试

在Gradle中从FileTree运行Junit测试
EN

Stack Overflow用户
提问于 2019-07-30 20:15:19
回答 1查看 167关注 0票数 0

我有一个Gradle文件(test.gradle),该文件目前正在从包含类名的XML文件中读取,以确定要运行哪些测试。要测试的类从XML中过滤(到文件树中),然后使用groovy的ant.junit()运行。这主要是因为有单独的竹代理需要运行特定的测试,这是根据所提供的属性来确定的。我希望在每个代理中并行运行这些任务。ant.junit没有类似于maxParallelForks选项的东西来指定并行显示的JVM的确切数量。

目前正在发生的事情:-在竹子中,test.gradle被重命名为build.gradle。它用所有的类解压缩一个jar,并将它们放在目标构建目录中。-有一项任务可以过滤要测试的类(基于所提供的XML ),它将基于在竹配置中提供的属性的目标构建目录中的类筛选为文件树。-然后ant.junit使用以下方法运行测试:

代码语言:javascript
复制
batchtest(todir: "${testDir}") {
      ant.filelist(dir: "${targetDir}/build", files: 
      filteredTests.join(","))
}
  • Ant似乎没有选择一次运行的并行JVM分叉的数量。我试图将这些测试移到java,希望能够设置一个jvm参数,该参数可以设置类似于maxParallelFork选项的内容。或者,只需在依赖于进行筛选的任务的gradle测试任务中运行文件树。我最好的选择是什么?

尝试过:-我尝试将任务(将测试过滤为一个文件树并使用ant运行它们)类型更改为一个测试。但这似乎行不通。我的假设是,由于没有项目结构,而且事情是从解压缩的jar中挑选出来的,所以测试任务不知道如何运行它们。-我尝试创建一个单独的分级测试任务(它将依赖于筛选任务),它将包括fileTree。但是运行似乎没有从包含的测试中找到类。我需要提一下他们需要从哪里挑选的目录吗?

EN

回答 1

Stack Overflow用户

发布于 2019-07-31 08:26:39

假设您的xml类似于

代码语言:javascript
复制
<tests>
   <test>foo.bar.Test1</test>
   <test>foo.bar.Test2</test>
</tests>

你可以做这样的事

代码语言:javascript
复制
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" } 
}      
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57279384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档