web-dev-qa-db-ja.com

Jenkins JUnitテスト結果レポートプラグインは、JUnit xmlファイルが見つからないと述べていますか?

ジェンキンスから受信した正確なメッセージは次のとおりです。

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

JUnitテスト結果レポートプラグインを構成する際、「テストレポートXML」パスを「/reports/TEST-*.xml」として入力すると、パスの下に次のエラーが表示されます。

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

私もフルパスを使用しようとしましたが、同じ結果が得られます。どちらの場合も、パスは/ reportsディレクトリにある「TESTS-TestSuites.xml」ファイルを選択する必要があります。

これがプラグインの問題なのか、生成されるXMLファイルの問題なのかはわかりません。また、JUnitテストを実行してXML結果ファイルを生成するために作成したantビルドスクリプトの問題である可能性があることも承知しています。

<?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>

私はしばらくこの問題を調査してきましたが、解決策が見つからなかったので、助けていただければ幸いです。ありがとう。

17
Ben

Jenkinsはワークスペースルートからパスを探します。指定されたパスが正しいことを確認するか、ワイルドカードを使用して複数の場所を検索します。 **/reports/TEST-*.xmlを使用してみてください。レポートフォルダがワークスペースのすぐ下にあることを確認してください。テスト結果ファイルがパスで指定された場所に実際に存在するかどうかを手動で確認します。

15
Shiva Kumar

複数のGradle製品フレーバーを含む私のAndroidプロジェクトでは、Test report XMLsに次のパスを使用しました。

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

JUnit plugin

7
JJD