无法在Jenkins管道中显示JUnit测试结果

时间:2016-12-19 20:41:48

标签: jenkins jenkins-pipeline

我有一段Jenkins管道代码,我试图在我的角度代码上运行JUnit。

如果单元测试失败,Jenkins必须停止管道。 它的工作除了我无法看到"最新的测试结果"和"测试结果趋势"

我正在使用Jenkins 2.19.1,Jenkins Pipeline 2.4和Junit 1.19

{
        sh("npm install -g gulp bower")
        sh("npm install")
        sh("bower install")    
        try {
            sh("gulp test")
        } catch (err) {
            step([$class: 'JUnitResultArchiver', testResults: '**/reports/junit/*.xml', healthScaleFactor: 1.0])
            junit '**/reports/junit/*.xml'
            if (currentBuild.result == 'UNSTABLE')
                currentBuild.result = 'FAILURE'
            throw err
        }
    }

Any idea what I am doing wrong?

3 个答案:

答案 0 :(得分:15)

仅供参考,如果您使用声明性管道,您可以执行以下操作:

pipeline {
   agent any
   stages {
     stage('Build and Test') {
        steps {
            sh 'build here...'
            sh 'run tests here if you like ...'
        }
     }
   }

   post {
      always {
        junit '**/reports/junit/*.xml'
      }
   } 
}

这也适用于html发布或任何东西,不需要finally / catch等。它将始终归档结果。

请参阅https://jenkins.io/doc/book/pipeline/syntax/#declarative-pipeline了解更多

答案 1 :(得分:2)

我认为我之前尝试做的方式是错误的。我已经改变了我的代码,如下所示:

{
        sh("npm install -g gulp bower")
        sh("npm install")
        sh("bower install")
        try {
            sh("gulp test")
        } catch (err) {
            if (currentBuild.result == 'UNSTABLE')
                currentBuild.result = 'FAILURE'
            throw err
        } finally {
            step([$class: 'JUnitResultArchiver', testResults: '**/reports/junit/*.xml', healthScaleFactor: 1.0])
            publishHTML (target: [
                    allowMissing: false,
                    alwaysLinkToLastBuild: false,
                    keepAll: true,
                    reportDir: 'coverage',
                    reportFiles: 'index.html',
                    reportName: "Junit Report"
            ])
        }
    }

答案 2 :(得分:1)

Jenkins管道步骤,用于发布由 Gradle构建产生的JUnit风格的测试结果:

  stage('Publish test results') {
      junit '**/test-results/test/*.xml'
  }