2011-08-25 88 views
0

我们使用巡航控制进行日常自动测试。我们使用JUnit框架。对于每种情况,我们都有一个除junit案例的日志文件以外的输出文件。构建完成后,我们将输出文件添加到项目的工件目录中。我们使用内置的XSL文件“unittests.xsl”来发布电子邮件结果。 最近,我想修改xsl文件“unittests.xsl”,为每个案例添加一个超链接到输出文件。以下是我试过在最开始:如何将项目属性输出到构建XML日志,以便可以在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> 

这里的问题是,输出文件的URL使用Web浏览器中打开结果页面时可以正常工作;但结果邮件中的url不正确。在邮件中,URL被concated为: 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中定义)不会输出到项目日志中。所以我不能这样做。

有没有其他办法可以达到这个目的?提前致谢。

回答

1
  1. 创建一个XML文件来保存,你需要有在CC发布阶段
  2. 构建
  3. 将文件复制到在该CC合并目录中填写与属性的XML文件的属性构建
  4. 目标在XSL转换

如果您在构建期间呼应性的CC数的属性值,那么他们在CC日志不可预知的位置,最终结束。一个可靠的方法是创建一个专门用于你需要的东西的xml文件,并在最后将它合并到日志中。现在,您可以可靠地定位xsl中的值。

+0

谢谢。这也是我的想法:) – adarliu

+0

解决方案的一个问题是,XML文件中的属性不能由项目动态生成... – adarliu

+0

您有一个模板xml文件,您在构建期间填写。它有空值开始。这就是我们所做的。它足够动态。无论如何,xsl不会是动态的。 –

0

您可以简单地将属性传递给antbuilde并回显它们。然后,当你合并你的日志文件时,属性值将会在其中。

相关问题