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