email - test - Cómo corregir "Se encontraron informes de prueba, pero ninguno de ellos es nuevo. ¿Las pruebas se ejecutaron? "En Jenkins
show test results in jenkins (6)
Me aparece el error "Se encontraron informes de prueba pero ninguno es nuevo. ¿Se realizaron las pruebas?" cuando intenta enviar los resultados de la prueba unitaria por correo electrónico. La razón es que tengo un trabajo dedicado de Jenkins que importa los artefactos de un trabajo de prueba a sí mismo, y envía los resultados de la prueba por correo electrónico. La razón por la que estoy haciendo esto es porque no quiero que Jenkins envíe todos los desarrolladores por correo electrónico durante la noche :) entonces estoy "posponiendo" el envío del correo electrónico ya que Jenkins no admite notificaciones retrasadas (por desgracia).
Sin embargo, cuando se ejecuta el trabajo "enviar resultados de prueba por correo electrónico", las pruebas tienen horas de antigüedad y recibo el error especificado en el título de la pregunta. ¿Alguna idea sobre cómo solucionar este problema?
Aquí hay una versión actualizada de Jenkinsfile (Canal Declarativo):
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''
}
}
}
Asegúrese de haber mencionado la ruta correcta contra "Test report XMLs" en la configuración de jenkins, como "target / surefire-reports / *. Xml" No es necesario tocar * .xml ya que jenkins no se quejará aunque pruebe resultados archivo xml no cambia.
Ejecutar cd path / to / test / reports touch * .xml
no funciona para mí, pero ejecuta el siguiente comando funciona:
mvn prueba limpia a través de la consola oa través de jenkins.
Esto genera nuevos informes de pruebas.
La actualización de la última fecha de modificación también se puede lograr en gradle en sí es deseable:
task jenkinsTest{
inputs.files test.outputs.files
doLast{
def timestamp = System.currentTimeMillis()
test.testResultsDir.eachFile { it.lastModified = timestamp }
}
}
build.dependsOn(jenkinsTest)
Como se menciona aquí: http://www.practicalgradle.org/blog/2011/06/incremental-tests-with-jenkins/
Podría intentar actualizar las marcas de tiempo de los informes de prueba como un paso de compilación ("Ejecutar script de shell"). P.ej
cd path/to/test/reports
touch *.xml
si usa el esclavo de Windows, puede "tocar" los resultados usando la etapa de canal maravilloso con powershell:
powershell ''ls "junitreports//*.*" | foreach-object { $_.LastWriteTime = Get-Date }''