在构建报告中合并NUnit和NAnt输出

时间:2010-01-06 09:33:36

标签: c# nunit cruisecontrol.net nant

我刚刚开始使用CruiseControl.NET,我无法理解为什么NA​​nt和NUnit输出的合并不起作用。我已将我的ccnet.config设置为谷歌上的典型值:

<merge>
  <files>
    <file>D:\ccnet\path1\nant-results.xml</file>
    <file>D:\ccnet\path2\TestResult.xml</file>
  </files>
</merge>
<xmllogger /> 

NAnt和ccnet工作正常:如果我故意输入代码错误,那么ccnet会说构建失败了。如果我故意进行一次失败的测试,也会发生同样的情况:ccnet会说构建失败。

问题ViewBuildReport.aspx页面没有显示NAnt或NUnit的任何输出。

显然我必须遗漏一些东西,但我不知道是什么。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

艾伯特 - 我问了一段时间后,我偶然发现了答案。这似乎是ccnet的行为开箱即用。因此,默认情况下,它不会在Web仪表板中显示编译结果。

您需要找到文件\ CruiseControl.NET \ webdashboard \ dashboard.config,并在buildReportBuildPlugin部分中添加compile.xsl。添加时会如下所示:

<buildPlugins>
  <buildReportBuildPlugin>
    <xslFileNames>
      <xslFile>xsl\header.xsl</xslFile>
      <xslFile>xsl\unittests.xsl</xslFile>
      <xslFile>xsl\modifications.xsl</xslFile>
      <xslFile>xsl\NCoverSummary.xsl</xslFile>

      <xslFile>xsl\compile.xsl</xslFile>

    </xslFileNames>
  </buildReportBuildPlugin>
  <buildLogBuildPlugin />
  <xslReportBuildPlugin description="NCover Report" actionName="NCoverBuildReport" xslFileName="xsl\NCover.xsl"></xslReportBuildPlugin>
</buildPlugins>

文档非常糟糕,我在寻找其他东西时偶然发现了这一点。当我在ccnet网站上的一些文档或示例在几分钟内解决了这个问题时,我感到非常高兴我浪费了这么多时间。

答案 1 :(得分:1)

该块是否位于您的发布商部分?

以下是我的一位发布商的样子:

    <publishers>
        <merge>
            <files>
                <file>*-results.xml</file>
            </files>
        </merge>
        <xmllogger />
    </publishers>

答案 2 :(得分:0)

我错过了publishers标记,但添加它并没有修复任何内容。

从ccnet调用nant和nunit的最佳做法是什么?目前我有这个我不喜欢的设置:

ccnet with nant task,nant构建文件使用msbuild和nunit2任务进行编译和测试。

很难找到一个体面的ccnet,nant和nunit的例子,它真正解释了将它们一起使用的最佳方式。我正在运行ccnet作为服务,这有什么不同?我试图尽可能简单地保持它,这大致就是我正在做的事情:

的ccnet.config:

<tasks>
<nant>
<baseDirectory>D:\ccnet\builds\checkout\path</baseDirectory>
<buildFile>go.build</buildFile>
<targetList>
<target>test</target>
</targetList>
</nant>
</tasks>

<publishers>
<merge>
<files>
<file>D:\ccnet\builds\artifacts\path1\nant-results.xml</file>
<file>D:\ccnet\builds\checkout\path\name.dll-results.xml</file>
</files>
</merge>
<xmllogger /> 
</publishers>

在go.build中:

<target name="build" depends="clean">
<msbuild project="name.sln">
</msbuild>
</target>

<target name="test" depends="build">
<nunit2>
<formatter type="Xml" usefile="false" />
<test assemblyname="Tests\path\name.dll" />
</nunit2>
</target>

如果我从仪表板检查构建日志,那么我可以看到它确实具有nant和nunit的xml输出。但这不会显示在仪表板上,为什么会这样呢?这将变得非常令人沮丧...

我尝试了两种不同类型的方法:自动魔术ccnet方法(只需设置usefile =“false”并让ccnet做其事)。这没用。

我也试过手动方法,设置usefile =“true”,然后合并nant-results.xml和name.dll-results.xml文件(没有通配符,只使用我有三倍文件的确切路径检查。)

它根本没有任何意义