使用Pipeline&;groovy,我如何从Jenkins中提取当前版本的测试结果? [英] Using pipeline & groovy, How can I extract test results from Jenkins for my current build?
本文介绍了使用Pipeline&;groovy,我如何从Jenkins中提取当前版本的测试结果?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个用Groovy编写的、在管道构建下运行的相当完整的构建过程,包括运行单元测试并使用JUnitResultArchiver将测试结果报告给Jenkins。
鉴于Jenkins已经为我分析了该XML并获得了测试结果,我希望在构建结束时提取任何和所有测试用例,以便包含在电子邮件中。
尝试与testResultAction交互时,最终出现未分类的方法错误。
如有任何帮助或示例,我们将不胜感激!
推荐答案
最终解决了此问题。以下是我编写的函数,您可以根据需要随意调整:
@NonCPS
def reportOnTestsForBuild() {
def build = manager.build
println("Build Number: ${build.number}")
if (build.getAction(hudson.tasks.junit.TestResultAction.class) == null) {
println("No tests")
return ("No Tests")
}
// The string that will contain our report.
String emailReport;
emailReport = "URL: ${env.BUILD_URL}
"
def testResults = build.getAction(hudson.tasks.junit.TestResultAction.class).getFailCount();
def failed = build.getAction(hudson.tasks.junit.TestResultAction.class).getFailedTests()
println("Failed Count: ${testResults}")
println("Failed Tests: ${failed}")
def failures = [:]
def result = build.getAction(hudson.tasks.junit.TestResultAction.class).result
if (result == null) {
emailReport = emailReport + "No test results"
} else if (result.failCount < 1) {
emailReport = emailReport + "No failures"
} else {
emailReport = emailReport + "overall fail count: ${result.failCount}
"
failedTests = result.getFailedTests();
failedTests.each { test ->
failures.put(test.fullDisplayName, test)
emailReport = emailReport + "
-------------------------------------------------
"
emailReport = emailReport + "Failed test: ${test.fullDisplayName}
" +
"name: ${test.name}
" +
"age: ${test.age}
" +
"failCount: ${test.failCount}
" +
"failedSince: ${test.failedSince}
" +
"errorDetails: ${test.errorDetails}
"
}
}
return (emailReport)
}
这篇关于使用Pipeline&;groovy,我如何从Jenkins中提取当前版本的测试结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文