使用Pipeline&groovy,我如何从Jenkins中提取当前版本的测试结果? [英] Using pipeline & groovy, How can I extract test results from Jenkins for my current build?

查看:16
本文介绍了使用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&amp;groovy,我如何从Jenkins中提取当前版本的测试结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆