Kotlin Spek - 如何使用测试报告生成XML?

时间:2017-02-24 00:43:01

标签: kotlin test-reporting

我正在使用Spek来测试我的Kotlin应用程序。我希望在Jenkins构建之后发布我的测试报告。 JUnit或TestNG将生成XML报告,Jenkins可以使用它来生成测试统计信息。

Spek会生成此类报告吗?如果是这样,如何配置我的Gradle项目来获取它?如果没有,还有哪些其他报告选项?

2 个答案:

答案 0 :(得分:1)

我没有彻底检查我的build目录。由于Spek使用的是JUnit 5 Platform Engine,它将以与JUnit 5相同的方式生成报告。

确实,在运行./gradlew clean build后,您可以在此处看到该文件:./build/reports/junit/TEST-spek.xml。我使用Jenkins在构建后发布了JUnit XML报告,它运行正常。

如果您想更改报告目录,则应在Gradle构建脚本中对其进行如下配置。

junitPlatform {
    reportsDir file("$buildDir/your/path")
    filters {
        engines {
            include 'spek'
        }
    }
}

来源,JUnit 5用户指南:http://junit.org/junit5/docs/current/user-guide/#running-tests-build

答案 1 :(得分:0)

我目前正在使用JaCoCoCoveralls在CI构建之后集成我的(多模块)项目,所以我可能会对单模块(我已经适应它)构建稍有错误但是这是我研究的一部分。

您需要做的第一件事是配置build.gradle以使测试正常运行将Jacoco插件应用于您的gradle:

apply plugin: "jacoco"

然后你必须启用输出:

jacocoTestReport {
    group = "Report"
    reports {
        xml.enabled = true
        csv.enabled = false
        html.destination "${buildDir}/reports/coverage"
    }
}

要生成您可以使用的报告:gradle test jacocoTestReport(可以随意添加jacocoTestReport到您已经工作的命令来构建)

现在生成报告后,您必须将它们发送到工作服,这是在编译/测试完成后的一个步骤中完成的。

要将它发送到工作服,您需要为工作服添加gradle插件:

plugins {
    id 'com.github.kt3k.coveralls' version '2.7.1'
}

创建rootReport任务

task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
    dependsOn = subprojects.test
    sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
    classDirectories =  files(subprojects.sourceSets.main.output)
    executionData = files(subprojects.jacocoTestReport.executionData)
    reports {
        html.enabled = true
        xml.enabled = true
        csv.enabled = false
    }
}

并为工作服任务添加kotlin源(默认情况下只支持java,Coveralls gradle plugin issue):

coveralls {
    sourceDirs += ['src/main/kotlin']
}

在生成jacocoRootReport时,我偶然发现了一个需要这三行的错误,但这主要是针对多模块项目(workaround source):

onlyIf = {
    true
}

最后一步是配置您的CI工具,以了解在哪里找到您的工作服令牌/属性(source)。我个人是通过添加环境变量来完成的,而不是coveralls.yml(它不能很好地工作)。

现在你可以为你的构建后添加两个步骤:

gradlew jacocoRootReport coveralls

你应该在工作服页面上看到你的报告!

Jacoco和工作服:https://nofluffjuststuff.com/blog/andres_almiray/2014/07/gradle_glam_jacoco__coveralls

工作示例:https://github.com/jdiazcano/cfg4k/blob/master/build.gradle#L24