web-dev-qa-db-fra.com

Le plug-in Jenkins JUnit Test Result Report indique que le fichier xml JUnit est introuvable?

Le message exact reçu de jenkins est:

No test report files were found. Configuration error?
Build step 'Publish JUnit test result report' changed build result to FAILURE

Lors de la configuration du plug-in JUnit Test Result Report, lors de la saisie du chemin 'Test Report XMLs' en tant que '/reports/TEST-*.xml', l'erreur suivante s'affiche sous le chemin:

'/reports/TEST-*.xml' doesn't match anything: '' exists but not '/reports/TEST-*.xml'

J'ai également essayé d'utiliser le chemin complet, mais cela produit le même résultat. Dans les deux cas, les chemins d'accès auraient dû récupérer le fichier 'TESTS-TestSuites.xml' qui était présent dans le répertoire/reports.

Je ne sais pas si c'est un problème avec le plugin ou le fichier XML généré. Je suis également conscient que cela pourrait être un problème avec le script de construction de fourmis que j'ai écrit pour exécuter les tests JUnit et produire le fichier de résultat XML.J'ai donc inclus le contenu de ceci ci-dessous au cas où quelque chose devrait être changé:

<?xml version="1.0" encoding="utf-8"?>
<project name="jenkins-tests" basedir="." default="linux">

<property name="junit.output.dir" value="output"/>
<property name="src.dir" value="src"/>
<property name="lib.dir" value="libs" />
<property name="bin.dir" value="bin" />
<property name="full-compile" value="true" />

<path id="classpath.base"/>

<path id="classpath.test">
    <pathelement location="${bin.dir}" />
    <pathelement location="${src.dir}" />
    <pathelement location="${lib.dir}" />
    <pathelement location="${lib.dir}/junit.jar" />
    <path refid="classpath.base" />
</path>

<target name="clean" description="Clean up build artefacts">
    <delete dir="${basedir}/${junit.output.dir}" />
</target>

<target name="prepare" depends="clean" description="Prepare for build">
    <mkdir dir="${basedir}/${junit.output.dir}" />
    <mkdir dir="${junit.output.dir}/reports"/> 
</target>

<target name="compile" depends="prepare">
    <javac srcdir="${src.dir}" destdir="${bin.dir}" verbose="${full-compile}" includeAntRuntime="false" >
        <classpath refid="classpath.test"/>
    </javac>
</target>

<target name="test" depends="compile">
    <junit printsummary="true" haltonfailure="false">
        <formatter type="xml" usefile="true"/>
        <classpath refid="classpath.test" />
        <batchtest fork="yes" todir="${junit.output.dir}">
            <fileset dir="${src.dir}">
                <include name="*.Java"/>
            </fileset>
        </batchtest>
    </junit>
</target>

<target name="test-reports" depends="test">
    <junitreport tofile="TESTS-TestSuites.xml" todir="${junit.output.dir}/reports">
        <fileset dir="${junit.output.dir}">
            <include name="TEST-*.xml" />
        </fileset>
        <report format="frames" todir="${junit.output.dir}/reports" />
    </junitreport>
</target>
</project>

Je fais des recherches sur ce problème depuis un certain temps maintenant et je n'ai trouvé aucune solution, j'apprécierais donc toute aide. Merci.

17
Ben

Jenkins recherche le chemin depuis la racine de l'espace de travail. Assurez-vous que le chemin indiqué est correct ou utilisez des caractères génériques pour rechercher dans plusieurs emplacements. Essayez d'utiliser **/reports/TEST-*.xml Êtes-vous sûr que le dossier des rapports se trouve juste sous l'espace de travail? Vérifiez manuellement si les fichiers de résultats de test sont bien présents à l'emplacement indiqué dans le chemin.

15
Shiva Kumar

Pour mon projet Android qui a plusieurs versions de produit Gradle, j'ai utilisé le chemin suivant pour Test report XMLs:

**/build/test-results/**/TEST-*.xml

JUnit plugin

7
JJD