1

我正在尝试使用 import hudson.tasks.junit.TestResult 从下游作业中获取 Junit 测试的计数,但无法计数。

预期:能够从下游提取计数。

实际:testResultaction始终为空。

stage ('Starting Smoke Check') {
    steps{
        script {
            echo 'Staring Health Check'
            def jobBuild = build job:'JI',parameters:[]
            def jobResult = jobBuild.getResult()
            echo "Build returned result: ${jobResult}"
            def log = jobBuild.rawBuild.log
            echo "===================START LOG==================="
            println("Build log: ${log}")

            TestResult testResultAction =  jobBuild.rawBuild.getAction(TestResult.class)
            println "TestResult Action: ${testResultAction}"
            if (testResultAction != null) {
               def totalNumberOfTests = testResultAction.getTotalCount()
               def failedNumberOfTests = testResultAction.getFailCount()
               def skippedNumberOfTests = testResultAction.getSkipCount()
               def passedNumberOfTests = totalNumberOfTests - failedNumberOfTests - skippedNumberOfTests                        
               echo "Tests Report:\n Passed: ${passedNumberOfTests}; Failed: ${failedNumberOfTests} ${failedDiff}; Skipped: ${skippedNumberOfTests}  out of ${totalNumberOfTests} "
            } 
            echo 'Health Check completed successfully!!'
        }
    }
}
4

1 回答 1

1

在我通过在 getAction(hudson.tasks.junit.TestResultAction.class) 中指定完整的类名来修改您的代码后为我工作

script {
               def runWrapper = build(
                   job: 'testjobs/qa-tmp-2',
                   parameters: [],
                   propagate: false,
                )

                def jobResult = runWrapper.getResult()
                echo "Build returned result: ${jobResult}"

                def testResultAction =  runWrapper.rawBuild.getAction(hudson.tasks.junit.TestResultAction.class)
                echo "testResultAction ${testResultAction}"

                if (testResultAction != null) {
                  def totalNumberOfTests = testResultAction.getTotalCount()
                  def failedNumberOfTests = testResultAction.getFailCount()
                  def skippedNumberOfTests = testResultAction.getSkipCount()
                  def passedNumberOfTests = totalNumberOfTests - failedNumberOfTests - skippedNumberOfTests                        
                  echo "Tests Report:\n Passed: ${passedNumberOfTests}; Failed: ${failedNumberOfTests}; Skipped: ${skippedNumberOfTests}  out of ${totalNumberOfTests} "
                }
            }
于 2019-12-20T15:07:00.040 回答