如何解决"发现测试报告但没有一个是新的.测试是否运行?" 在詹金斯

use*_*582 33 email junit report jenkins

我收到错误"发现测试报告,但没有一个是新的.测试运行了吗?" 当试图通过电子邮件发送单元测试结果时.原因是我有一个专门的Jenkins作业,它将工件从测试作业导入到自身,并通过电子邮件发送测试结果.我这样做的原因是因为我不希望Jenkins在晚上发送所有开发人员的电子邮件:)所以我"邮寄"电子邮件发送,因为Jenkins本身不支持延迟电子邮件通知(遗憾的是).

但是,当"通过电子邮件发送测试结果"作业执行时,测试时间已经过了几个小时,我得到了问题标题中指定的错误.关于如何解决这个问题的任何想法?

Arm*_*and 59

您可以尝试将测试报告的时间戳更新为构建步骤("执行shell脚本").例如

cd path/to/test/reports
touch *.xml
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果删除了测试但保留了测试报告,这可能会使Jenkins相信已执行了删除的测试。 (2认同)
  • 可以通过添加“为什么”发生这种情况来改善此答案。 (2认同)

ala*_*tre 8

mvn clean test 
Run Code Online (Sandbox Code Playgroud)

通过终端或詹金斯。这会生成新的测试报告。

另一个答案说cd path/to/test/reports touch *.xml对我不起作用,但mvn clean test是的。


Mor*_*itz 6

更新上次修改日期也可以在gradle中实现:

task jenkinsTest{
    inputs.files test.outputs.files
    doLast{
        def timestamp = System.currentTimeMillis()
        test.testResultsDir.eachFile { it.lastModified = timestamp }
    }
}

build.dependsOn(jenkinsTest)
Run Code Online (Sandbox Code Playgroud)

如上所述:http://www.practicalgradle.org/blog/2011/06/incremental-tests-with-jenkins/


phe*_*anu 6

这是Jenkinsfile(声明式管道)的更新版本

pipeline {

    agent any

    stages {
        stage('Build') {
            steps {
                sh 'make build'
            }
        }
        stage('Test') {
            steps {
                sh 'make test'

                script {
                    def testResults = findFiles(glob: 'build/reports/**/*.xml')
                    for(xml in testResults) {
                        touch xml.getPath()
                    }
                }
            }
        }
    }

    post {
        always {
            archiveArtifacts artifacts: 'build/libs/**/*.jar', fingerprint: true
            junit 'build/reports/**/*.xml'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我相信这只有在您的 Jenkins 服务器上安装了“[Pipeline Utility Steps](https://plugins.jenkins.io/pipeline-utility-steps)”插件时才有效。我不喜欢,管理员不喜欢在没有先审查的情况下添加插件(需要一段时间) (2认同)