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

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

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

我目前正在使用JaCoCo和Coveralls在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插件问题 ):

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

我偶然发现了一个bug,在生成jacocoRootReport时需要这三行代码,但这主要是针对多模块项目( 解决方法来源 ):

 onlyIf = { true } 

最后一步是配置你的CI工具,以知道在哪里可以找到你的连身服的记号/属性( 源 )。 我个人已经通过添加环境变量而不是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

我没有彻底检查我的build目录。 由于Spek正在使用JUnit 5平台引擎,因此它将生成与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

Interesting Posts