我们正在考虑从phpundercontrol切换到Hudson(它看起来有一些非常酷的功能!)但我无法弄清楚如何让phpunit日志显示出来。
我在php中使用ant在Hudson中运行正常,而-log-xml将phpunit.xml放在该版本的相应build /文件夹中。但是我无法弄清楚如何让它出现在构建中,以便我们可以看到运行的测试和失败的测试,如果有的话。
在我弄明白之后,接下来将获得报道,指标和api:)
似乎对于在HTML上生成它的任何内容都应该是微不足道的,告诉Hudson例如“为此项目显示每个构建的'API'链接和构建链接/ $ BUILDNUM / api / index.html ”
答案 0 :(得分:24)
我安装了xUnit插件,将其指向我的日志文件(来自作业配置),它就像一个魅力。似乎不再需要任何自定义黑客攻击。
答案 1 :(得分:7)
最后一个答案是2009年和a lot of people migrating from Hudson to Jenkins现在due to Oracle,请考虑使用 Jenkins模板for PHP ,为您提供免费且方便的模板,满足您的所有配置需求PHPQATools,如pdepend,phpmd,phpcs和phpunit,在一个方便的模板中。
答案 2 :(得分:5)
你也可以使用这个xslt文件将phpunit xml转换为hudson / junit xml:
<?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>
答案 3 :(得分:4)
我通常使用CruiseControl进行PHP测试(使用CC的Phing支持,而不是phpundercontrol)。我只和Hudson一起工作了一段时间,但是让Hudson使用phing的phpunit支持成功记录了phpunit测试。
以下说明假设您将使用Phing(而非Ant)来管理PHP项目构建,并且您已安装必要的prereq。它还假设您安装了PHPUnit 3(尽管PHPUnit 2.x也应该可以工作)。
第1步:为Phing / PHPUnit设置项目
首先,您需要确保您的项目可以使用Phing进行测试。这是一个示例Phing build.xml,它运行单元测试并创建与JUnit兼容的XML输出。
<?xml version="1.0" ?>
<project name="Test Project" default="test">
<property name="tests.dir" value="." />
<property name="reports.dir" value="${tests.dir}/reports" />
<target name="test" description="Run PHPUnit tests">
<phpunit haltonerror="true" haltonfailure="true" printsummary="true">
<batchtest>
<fileset dir="${tests.dir}">
<include name="**/*Test.php" />
</fileset>
</batchtest>
<formatter type="plain" usefile="false" />
<formatter type="xml" usefile="true" todir="${reports.dir}" outfile="test-results.xml" />
</phpunit>
</target>
</project>
第2步:设置Hudson
第3步:构建!
应该这样做。立即尝试构建项目。希望它会收集结果。
另请参阅此Phing presentation或此Phing presentation以获取有关Phing和(在较小程度上)PHPUnit集成的更多信息。
祝你好运!答案 4 :(得分:2)
PHPUnit is not (currently) compatible with Hudson发出的XML格式,因为它与其他类似工具生成的XML不完全相同。这就是为什么你得到“没有任何测试报告包含任何结果”的消息。
缺少修复PHPUnit以生成“更好”的XML或改进Hudson在其接受的内容中更灵活,唯一的解决方案是通过消除&lt; testuite&gt;的嵌套来修复XML。元素。我used sed to alter the PHPUnit XML因此Hudson可以接受:
# Tweak the test result XML to make it acceptable to Hudson.
lines=`wc -l test-results/results.xml|awk '{print $1}'`
end=`expr $lines - 1`
sed -i "$end d;3d" test-results/results.xml
答案 5 :(得分:2)
上一篇文章中的XSLT转换对我不起作用。应用此转换后,报表的DOM结构不会更改。我修改它来解决问题。我的变体是:
<?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]/testsuite">
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
它对我有用。
答案 6 :(得分:2)
如果您想要一个关于将PHP与Hudson集成的完整教程,您可以查看以下链接:
答案 7 :(得分:0)
上面的答案有效,但更简单,无需更改构建过程:
答案 8 :(得分:0)
我认为xslt可能必须根据使用的phpunit版本而变化。例如,使用phpunit版本3.3.17
,由hoschi发布的样式表对我来说效果很好但完全有可能phpunit升级为在较新版本中发出不同的格式,或者sir-vestnik可能正在运行旧版本。