【问题标题】:Jenkins JUnit Test Result Report plugin states that the JUnit xml file is not found?Jenkins JUnit 测试结果报告插件指出找不到 JUnit xml 文件?
【发布时间】:2013-02-02 17:03:40
【问题描述】:

从詹金斯收到的确切消息是:

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

在配置 JUnit 测试结果报告插件时,在将“测试报告 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>

我一直在研究这个问题一段时间,但没有找到任何解决方案,所以我将不胜感激。谢谢。

【问题讨论】:

  • 您是否至少运行过一次测试?首次配置插件时确实会出现此错误。
  • 是的,测试运行良好并且说构建成功。它只是尝试使用导致构建失败的插件生成报告。
  • @Ben:你能通过 jenkins->job->workspace->... 浏览到 TEST*xml 文件吗?它将给出真正需要什么模式的想法。 Shiva Kumar 的回答应该有效。
  • @Jayan 我查看了工作的工作区。奇怪的是,在我的本地服务器上,路径是 \Clients\website\versions\ben\includes\fuel\app\tests\selenium\JenkinsTests\outp‌​ut\reports 而在 jenkins/job/workspace 下的复制路径中包含/燃料/应用测试目录和其中的那些目录不存在。你知道为什么吗?
  • @Ben:jenkins 有默认工作区,由自己管理。它还允许您提供自定义工作区(隐藏在工作的高级设置下)

标签: ant junit jenkins jenkins-plugins


【解决方案1】:

对于我的具有多种 Gradle 产品风格的 Android 项目,我为Test report XMLs 使用了以下路径:

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

【讨论】:

  • 这条路帮助了我,谢谢。但是,它仅适用于 JUnit4。我不断尝试使用 JUnit5,使用不同的路径,但没有成功。你知道任何其他可能适用于 JUnit5 的路径吗?或任何其他解决方法......将不胜感激;)
  • @arthur0304 我还没有考虑获取 JUnit5 测试结果。因此,我强烈建议您将您的问题作为一个单独的问题发布在 Stackoverflow 上,这样它会比您在此处的评论受到更多关注。
【解决方案2】:

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

【讨论】:

  • 我已经使用了该路径,它已经摆脱了初始路径错误,但在运行作业时我仍然收到 xml not found 错误。也许报告文件夹在错误的位置。目前 Jenkins 在单独的服务器上运行以进行测试。报告文件夹是否必须在 Jenkins 服务器上,并且 ant 脚本中的报告指向那里?
  • 在本地服务器(不是 jenkins 服务器)上,我的基本目录包含 JUnit 测试的 src、bin 和 libs 目录以及 ant build xml 文件。 build.xml 文件在运行时将输出目录 (${junit.output.dir}) 与这些其他目录放在一起,然后在其中创建报告目录。 jenkins 目录在它们自己的服务器上是完全独立的。我刚刚查看了 jenkins 服务器,并且我有以下作业工作区的路径: /var/lib/jenkins/jobs/jUnit Test/workspace 报告、测试和 build.xml 应该在这里吗?
  • \Clients\website\versions\ben\includes\fuel\app\tests\selenium\JenkinsTests\output\reports
  • 这看起来不像是在运行作业的地方。您可以通过提供完整路径来检查 \Clients\website\versions\ben\includes\fuel\app\tests\selenium\JenkinsTests\outp‌​ut\reports\TEST-*.xml 并检查 JUnit Report 插件吗?你能知道你的 src、bine 和 lib 目录是来自 SVN 还是存在于本地服务器的硬编码路径中?
  • 完整路径产生相同的错误,并且存在的 src、bin 和 libs 目录位于本地服务器的硬编码路径中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
相关资源
最近更新 更多