Xml Hudson CI和PHPUnit:所有测试报告均未包含任何结果

Xml Hudson CI和PHPUnit:所有测试报告均未包含任何结果,xml,junit,hudson,phpunit,Xml,Junit,Hudson,Phpunit,我试图使用xUnit插件将我的PHPUnit测试集成到Hudson中。在hudson中使用Ant成功构建后,控制台输出显示: 记录测试结果 所有测试报告均未包含任何结果 使用phpunit--log junit的junit.xml测试输出如下所示: <testsuites> <testsuite name="Unit Tests" tests="1" assertions="1" failures="0" errors="0" time="0.005112"> &

我试图使用xUnit插件将我的PHPUnit测试集成到Hudson中。在hudson中使用Ant成功构建后,控制台输出显示:

记录测试结果
所有测试报告均未包含任何结果

使用phpunit--log junit的junit.xml测试输出如下所示:

<testsuites>
  <testsuite name="Unit Tests" tests="1" assertions="1" failures="0" errors="0" time="0.005112">
  <testsuite name="DbTest" file="src/tests/unit/DbTest.php" tests="1" assertions="1" failures="0" errors="0" time="0.005112">
    <testcase name="testConnection" class="DbTest" file="src/tests/unit/DbTest.php" line="4" assertions="1" time="0.005112"/>
    </testsuite>
  </testsuite>
</testsuites>

谢谢你的帮助

编辑: 我刚刚创建了一个测试junit.xml,其中包含:

<testsuites>
  <testsuite name="DbTest" file="src/tests/unit/DbTest.php" tests="1" assertions="1" failures="0" errors="0" time="0.005112">
    <testcase name="testConnection" class="DbTest" file="src/tests/unit/DbTest.php" line="4" assertions="1" time="0.005112"/>
    </testsuite>
</testsuites>


有了这个,构建就成功了。问题似乎在于嵌套标记。你知道如何防止PHPUnit创建这些嵌套标记吗?

我终于找到了使用xslt的解决方案

如果有人有相同的问题:在项目根目录下的任意位置创建一个新的.xsl文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <xsl:element name="testsuites">
        <xsl:for-each select="//testsuite[@file]">
                 <xsl:copy-of select="." />
        </xsl:for-each>
    </xsl:element>
</xsl:template>
</xsl:stylesheet>

然后添加到build.xml(不要忘记将其包含在构建目标中):



无论如何,这有点麻烦。因此,我已经为xUnit项目创建了一个改进建议。

感谢分享您的解决方案+1.
<target name="phpunit_to_xunit">
  <xslt in="build/logs/phpunit.xml" out="build/logs/junit.xml" style="phpunit_to_xunit.xsl"/>
</target>