Jenkins JUnit测试结果报告插件声明找不到JUnit xml文件?

时间:2013-02-18 09:47:13

标签: ant junit jenkins jenkins-plugins

从jenkins收到的确切消息是:

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

配置JUnit测试结果报告插件时,在输入'Test Report XMLs'路径为'/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>

我一直在研究这个问题已经有一段时间没有找到任何解决方案所以我会感激任何帮助。感谢。

2 个答案:

答案 0 :(得分:13)

Jenkins从工作区根目录中查找路径。确保给定路径正确或使用通配符查看多个位置。尝试使用**/reports/TEST-*.xml 您确定报告文件夹位于工作区下方吗?如果测试结果文件确实存在于路径中给出的位置,请手动验证。

答案 1 :(得分:5)

对于具有多种Gradle产品风格的 Android 项目,我使用% x,y were obtained using imfreehand on 100x100 image and getPosition() x = [21;22;22;22;22;22;22;23;23;23;23;23;23;24;25;25;26;26;27;28;29;30;30;31;32;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;79;80;80;81;81;81;82;82;82;82;83;83;83;84;84;85;85;86;86;86;86;86;86;85;84;84;83;82;81;80;79;78;77;76;75;74;73;72;71;70;69;68;67;66;65;64;63;62;61;60;59;58;57;56;55;54;53;52;51;50;49;48;47;46;45;44;43;42;41;40;39;38;37;36;35;34;33;32;31;30;29;28;27;26;25;25;24;24;23;22;21;21;21;21;21;21;21;21;21;21;21;21;21]; y = [44;43;42;41;40;39;38;37;36;35;34;33;32;31;30;29;28;27;26;25;24;23;22;21;20;19;18;18;17;17;17;17;17;16;16;16;16;16;16;15;15;14;14;14;14;14;14;15;15;15;16;16;17;17;17;17;18;18;18;19;20;20;21;22;23;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;56;57;57;58;59;59;60;61;61;61;61;61;60;60;60;59;58;57;56;56;55;55;54;54;54;54;54;54;54;54;54;55;55;55;55;56;57;58;59;60;61;61;62;63;63;64;64;65;65;66;66;66;66;66;66;65;64;63;62;61;60;59;58;57;56;55;54;53;52;51;50;49;48;47;46;45;44]; % generate arbitrary xy x1 = (x - 50)./10; y1 = (y - 50)./10; x2 = (x - 50)./10; y2 = (y - 40)./10; % generate binary masks using poly2mask pixelSize = 0.01; % resolution xx = min([x1(:);x2(:)]):pixelSize:max([x1(:);x2(:)]); yy = min([y1(:);y2(:)]):pixelSize:max([y1(:);y2(:)]); [xg,yg] = meshgrid(xx,yy); mask1 = inpolygon(xg,yg,x1,y1); mask2 = inpolygon(xg,yg,x2,y2); % add both masks (now their common area pixels equal 2) combinedMask = mask1 + mask2; % XOR on both of them xorMask = xor(mask1,mask2); % compute mask area in units (rather than pixels) Area = bwarea(xorMask)*pixelSize^2; % plot subplot(131); plot(x1,y1,x2,y2,'LineWidth',2); title('Curves'); axis square set(gca,'YDir','reverse'); subplot(132); imshow(combinedMask,[]); title('Combined Mask'); subplot(133); imshow(xorMask,[]); title(['XNOR Mask, Area = ' num2str(Area)]); 的以下路径:

Test report XMLs

JUnit plugin