如何修复“发现了测试报告,但没有一个是新的。测试运行了吗?“詹金斯

问题描述 投票:32回答:10

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

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

email junit jenkins report
10个回答
54
投票

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

cd path/to/test/reports
touch *.xml

0
投票

在Jenkins上配置作业时,可以将以下shell命令添加到“预备步骤”部分

mvn clean test

这将清理测试


-1
投票

我的解决方案是删除node_modules并在jenkins上更改node版本(从7.1到8.4)。而已。


6
投票

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

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

build.dependsOn(jenkinsTest)

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


4
投票

这是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'
        }
    }
}

3
投票

执行cd path / to / test / reports touch * .xml

不适合我,但运行以下命令工作:

通过控制台或通过jenkins进行mvn清洁测试。

这会生成新的测试报告。


2
投票

对于反复运行的工作(每30分钟)有同样的问题。

对于这项工作,请转到配置,构建,高级,并在交换机部分添加: - stacktrace --continue --rerun-tasks


0
投票

确保你已经在jenkins配置下提到了“测试报告XML”的正确路径,例如“target / surefire-reports / * .xml”没有必要触摸* .xml,因为即使测试jenkins也不会抱怨结果xml文件不会更改。


0
投票

如果你使用Windows slave,你可以使用带有powershell的groovy管道阶段“触摸”结果:

powershell 'ls "junitreports\\*.*" | foreach-object { $_.LastWriteTime = Get-Date }'

0
投票

如果您使用的测试报告未在该运行中被该作业修改,则会发生这种情况。

如果您正在测试已创建的文件,请在Build> Execute Shell下的jenkins job中添加以下命令

chmod -R 775 /root/.jenkins/workspace/JmeterTest/output.xml

echo " " >> /root/.jenkins/workspace/JmeterTest/output.xml

以上命令更改文件的时间戳,因此错误不会显示。

注意:要在Execute Shell中实现相同而不是上面的操作,请不要尝试使用move mv命令重命名文件等。它不起作用,对更改文件时间戳的附加和删除只能起作用。


0
投票

对我来说,像chmod -R 775 test-results.xmltouch test-results.xml这样的命令由于权限错误而无效。解决方法是在测试报告设置中设置新文件,并命令将旧的xml报告文件复制到新文件。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.