首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分级合并Junit报告

分级合并Junit报告
EN

Stack Overflow用户
提问于 2016-08-16 07:37:55
回答 2查看 5.9K关注 0票数 7

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

当我们在ant中使用cp套件执行IntegrationTestSuite.java时,只有一个junit报告。在gradle上创建多个junit报告。

IntegrationTestSuite.java

代码语言:javascript
复制
@RunWith(Categories.class)
@Categories.IncludeCategory(IntegrationTests.class)
@Categories.ExcludeCategory(DebugJenkinsTests.class)
@Suite.SuiteClasses(AllTestSuite.class)
public class IntegrationTestSuite { /* nop */
}

build.xml剪下来

代码语言:javascript
复制
<junit>
   <formatter type="xml" />
      <batchtest todir="${testreport.dir}">
          <fileset dir="${test-src.dir}">
              <include name="**/IntegrationTestSuite.java" />
          </fileset>
       </batchtest>
</junit>

build.gradle剪下来

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-27 11:38:26

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

代码语言:javascript
复制
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')
        }
    }
}

请记住,您必须声明一个存储库,以允许Gradle解决ant-junit依赖。

票数 7
EN

Stack Overflow用户

发布于 2019-02-23 04:10:15

想补充本杰明的答案,因为我必须做一些改变才能使它发挥作用。这是我的档案最后看起来是什么样子。

代码语言:javascript
复制
configurations {
    antJUnit
}

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

subprojects {
    apply plugin: 'java'

    // Disable the test report for the individual test task
    test {
        reports.html.enabled = false
        reports.junitXml.enabled = true
    }
}
// Compile all the test results into a single one.
task testReport { 
    ant.taskdef(name: 'junitreport', classname: 'org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator', classpath: configurations.antJUnit.asPath)
    dependsOn subprojects*.test 
    doFirst { 
        mkdir "$buildDir/test-results"
        ant.junitreport(todir: "$buildDir/test-results") { 
            subprojects.each { 
                if (it.testResultsDir.exists()) {
                    fileset(dir: it.testResultsDir) 
                }
            } 
        } 
    } 
} 

希望这对遇到这个问题的人有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38969119

复制
相关文章

相似问题

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