web-dev-qa-db-fra.com

Comment résoudre le problème "Des rapports de test ont été trouvés mais aucun n'est nouveau. Les tests ont-ils été exécutés?" à Jenkins

Je reçois le message d'erreur "Des rapports de test ont été trouvés, mais aucun n'est nouveau. Des tests ont-ils été exécutés?" lorsque vous essayez d'envoyer des résultats de tests unitaires par courrier électronique. La raison en est que j'ai un travail Jenkins dédié qui importe les artefacts d'un travail de test sur lui-même et envoie les résultats du test par courrier électronique. La raison pour laquelle je le fais est que je ne veux pas que Jenkins envoie à tous les développeurs un courrier électronique au cours de la nuit :) je suis donc en train de "post-poning" l'envoi de courrier électronique puisque Jenkins lui-même ne prend pas en charge les notifications de courrier électronique retardé (malheureusement).

Cependant, au moment où le travail "envoyer les résultats du test par courrier électronique" est exécuté, les tests ont déjà pris plusieurs heures et le message d'erreur indiqué dans le titre de la question s'affiche. Des idées sur la façon de contourner ce problème?

30
user1340582

Vous pouvez essayer de mettre à jour les horodatages des rapports de test en tant qu'étape de construction ("script d'exécution"). Par exemple.

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

La mise à jour de la dernière date de modification peut également être réalisée en dégradé même:

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

build.dependsOn(jenkinsTest)

Comme mentionné ici: http://www.practicalgradle.org/blog/2011/06/incremental-tests-with-jenkins/

5
Moritz

Exécutez cd path/to/test/reports touch * .xml

ne fonctionne pas pour moi, mais exécutez la commande suivante:

mvn clean test via la console ou via jenkins.

Cela génère de nouveaux rapports de tests.

2
alansastre

Avait le même problème pour les travaux exécutés à plusieurs reprises (toutes les 30 minutes).

Pour le travail, allez dans Configurer, Construire, Avancé et dans la section Commutateurs, ajoutez:

1
JayKay

Voici une version mise à jour pour Jenkinsfile (Declarative Pipeline):

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'
        }
    }
}
1
phedoreanu

vous pouvez ajouter la commande Shell suivante à votre section "Pre Steps" lorsque vous configurez votre travail sur Jenkins

mvn clean test

cela va nettoyer le test

0
Ming M Zheng

Pour moi, des commandes comme chmod -R 775 test-results.xml ou touch test-results.xml ne fonctionnent pas en raison d'une erreur d'autorisation. Pour contourner le problème, vous devez définir un nouveau fichier dans les paramètres du rapport de test et commander de copier l’ancien fichier de rapport xml dans un nouveau fichier.

enter image description here

0
Cherry

si vous utilisez l'esclave Windows, vous pouvez «toucher» les résultats en utilisant un pipeline groovy avec powershell

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

Assurez-vous que vous avez mentionné le chemin correct contre "Test report XMLs" dans la configuration de Jenkins, tel que "target/surefire-reports/*. Xml" Il n'est pas nécessaire de toucher * .xml car Jenkins ne se plaindra pas. bien que le fichier xml des résultats des tests ne change pas.

0
Vijay Hajare

La solution pour moi était de supprimer node_modules et de changer la version node (de 7.1 à 8.4) sur Jenkins. C'est tout.

0
Vinicius Lima

Cela se produit si vous utilisez un rapport de test qui n'est pas modifié par ce travail lors de cette exécution.

Si vous testez avec un fichier déjà créé, ajoutez la commande ci-dessous dans le travail jenkins sous Build> Execute Shell.

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

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

La commande ci-dessus change l'horodatage du fichier et l'erreur ne s'affichera donc pas. 

Remarque: Pour obtenir la même chose dans Exécutez Shell au lieu de ci-dessus, n'essayez pas de renommer le fichier en utilisant move mv command etc. travaux.

0
sudhir tataraju