2016-08-16 120 views
3

在gradle中有一种方法可以将junit xml报告合并到单个测试报告文件中。Gradle合并Junit报告

当我们用cp-suite在ant中执行IntegrationTestSuite.java时,会有一个junit报告。在Gradle上创建多个junit报告。

IntegrationTestSuite.java

@RunWith(Categories.class) 
@Categories.IncludeCategory(IntegrationTests.class) 
@Categories.ExcludeCategory(DebugJenkinsTests.class) 
@Suite.SuiteClasses(AllTestSuite.class) 
public class IntegrationTestSuite { /* nop */ 
} 

build.xml

<junit> 
    <formatter type="xml" /> 
     <batchtest todir="${testreport.dir}"> 
      <fileset dir="${test-src.dir}"> 
       <include name="**/IntegrationTestSuite.java" /> 
      </fileset> 
     </batchtest> 
</junit> 

剪断剪断从build.gradle

task integrationTestSandro(type: Test) { 
    reports.html.enabled = false 
    include '**/IntegrationTestSuite*' 
    reports.junitXml.destination = "$buildDir/test-results/integration" 
    maxHeapSize = testTaskMaxHeapSize 
    jvmArgs testTaskJVMArgs 
} 

回答

2

您应该能够使用Ant任务JUnitReport来实现自己的目标。像下面这样的东西应该工作:

configurations { 
    antJUnit 
} 

dependencies { 
    antJUnit 'org.apache.ant:ant-junit:1.9.7' 
} 

task mergeJUnitReports { 
    ext { 
     resultsDir = file("$buildDir/allreports") 
     targetDir = file("$buildDir/test-results/merged") 
    } 

    doLast { 
     ant.taskdef(name: 'junitreport', 
        classname: 'org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator', 
        classpath: configurations.antJUnit.asPath) 

     ant.junitreport(todir: resultsDir) { 
      fileset(dir: resultsDir, includes: 'TEST-*.xml') 
      report(todir: targetDir, format: 'frames') 
     } 
    } 
} 

请记住,你将不得不宣布库中,允许摇篮,以解决ant-junit依赖。