我们使用cruisecontrol进行日常自动测试。我们使用JUnit框架。对于每种情况,我们都有一个输出文件,而不是junit case的日志文件。我们在构建完成时将输出文件添加到项目的工件目录中。我们使用内置的XSL文件“unittests.xsl”来发布电子邮件结果。 最近,我想修改xsl文件“unittests.xsl”,为每种情况添加一个超链接到输出文件。这是我一开始就尝试过的:
<td class="unittests-data" width="300">
<a href="{concat('artifacts/',$projectname,'/',$cctimestamp,'/autotest_logs/',..//..//@name,'_',..//@name,'.log')}"><xsl:value-of select="..//@name"/></a>
</td>
这里的问题是,使用Web浏览器打开结果页面时,输出文件的url可以正常工作;但结果邮件中的url不正确。在邮件中,网址标题为: http://localhost:18080/cruisecontrol/buildresults/artifacts/ ...
但我想要的是:
http://localhost:18080/cruisecontrol/artifacts/ ...
所以我想到另一种方法来解决这个问题。我的想法是将根URL的属性输出到项目日志,以便XSL文件可以像这样得到它的值:
<xsl:variable name="urlroot" select="/cruisecontrol/info/property[@name='urlroot']/@value"/>
<td class="unittests-data" width="300">
<a href="{concat($urlroot,'artifacts/',$projectname,'/',$cctimestamp,'/autotest_logs/',..//..//@name,'_',..//@name,'.log')}"><xsl:value-of select="..//@name"/></a>
</td>
问题在于,项目的属性(在config.xml中定义)不会输出到项目日志中。所以我不能这样做。
还有其他方法可以达到这个目的吗?提前谢谢。
答案 0 :(得分:1)
如果在构建期间将属性回显到CC日志,则它们最终会出现在CC日志中不可预测的位置。一种可靠的方法是专门为您需要的东西创建一个xml文件,并将其合并到日志中。现在,您可以可靠地定位xsl中的值。
答案 1 :(得分:0)
您可以简单地将属性传递给某些antbuilde并回显它们。然后,当您合并日志文件时,属性值将在其中。