3

我正在尝试使用我的单元测试生成的 HTML 报告来显示在 CruiseControl.NET 仪表板中,但我不知道我在哪里解决它。

我在“CCNetWorkingDirectory”中生成了我的报告。在我的“CCNet.config”文件中,我使用文件合并任务将报告复制到我的“CCNetArtifactDirectory”。这是行不通的步骤。我尝试了很多不同的方式。我有:

<publishers>
    <merge>
        <files>
            <file>
                Index.html
            </file>
            <file action="Copy">
                rep\Index.html
            </file>
        </files>
    </merge>
    <xmllogger/>
</publishers>

我的配置文件中的路径应该是什么?我的构建中断了以下消息:

“失败的任务:MergeFilesTask”

我真的不知道我做错了什么。

4

2 回答 2

2

我终于解决了这个问题。

发布者节点的ccnet.config文件中,我必须像这样复制 report.html:

<publishers>
  <merge>
    <files>
        <file action="Copy">PathToWorkingDirectory\report.html</file>
    </files>
  </merge>
  <xmllogger />
  <artifactcleanup cleanUpMethod="KeepLastXBuilds"
                   cleanUpValue="50" />
</publishers>

该文件将被复制到工件目录中的一个名为 Build Label 的文件夹中。由于安全原因,必须这样做:

HTML Source Location
该插件可以显示项目的 artifacts 文件夹下的 build 文件夹中的任何文件。它不能显示来自任何其他位置的文件(出于安全原因)。

要显示 HTML 报告,您只需将此行添加到您的dashboard.config

<htmlReportPlugin description="HRMLReport" actionName="htmlreport" htmlFileName="report.html" />

该行必须放在buildPlugins节点下。

<buildPlugins>
  <buildReportBuildPlugin>
    <xslFileNames>
      <xslFile>xsl\header.xsl</xslFile>
      <xslFile>xsl\modifications.xsl</xslFile>
    </xslFileNames>
  </buildReportBuildPlugin>
  <buildLogBuildPlugin disableHighlightingWhenLogExceedsKB="50"/>
  <htmlReportPlugin description="HRMLReport" actionName="htmlreport" htmlFileName="report.html" />
</buildPlugins>

在这些步骤之后,如果您在仪表板中导航到生成文件的构建,则应该显示您的报告。应该有一个名为HTMLReport的链接。

于 2013-10-25T10:03:12.280 回答
0

快速版本:

请注意以下位置的所有示例:

http://www.cruisecontrolnet.org/projects/ccnet/wiki/File_Merge_Task

是“*.xml”文件。

<merge>
  <files>
    <file>Nunit*.xml</file>
    <file>FXCop.xml</file>
    <file>resources\**\*.xml</file>
    <file>E:\CruiseControl\BuildRoot\ProjectX\**\coderesults.xml</file>
    <file>E:\CruiseControl\BuildRoot\Project*\**\Business*.xml</file>
  </files>
</merge>

您需要合并 .xml,而不是 .htm(l)。

更长的版本:

合并任务合并~xml。

只要有构建,就会有一个“MyBuildResults.xml”文件,我称之为“super-xml”。

如果您有一个工具(例如 NUnit(console).exe),该工具将推出一个文件“NUnitTestResults.xml”。

CruiseControl.NET 合并任务然后将采用“NUnitTestResults.xml”(可操作的东西,它是 XML)并将其“合并”到 MyBuildResults.xml(同样是 XML)中。

那种感觉是有道理的。您可以将 XML 合并到其他 XML 中。您如何获取任何文件并将其合并到任何文件中,包括 .html 文件。如果你合并 HTML,首先是什么?最后的?中间?

现在,一旦您有了最终的“MyBuildResults.xml”,就会有 .XSL 文件将其转换为显示在 CruiseControl.NET 项目网页中的 .html。

您会注意到 CruiseControl.NET 网页的一堆链接(左侧)......其中一个是“NUnit 测试结果”。但是开箱即用,如果您单击它,则不会显示任何内容。

那是因为没有 NUnitTestResults.xml 被“合并”到 super-build-xml 文件中。

如果您找到 CruiseControl.NET 为您安装的 .xsl 文件(或者您在事后安装),请查看这些文件,它将向您展示 .xsl 如何转换“super-build-xml”的 XML。

于 2013-10-17T14:04:23.590 回答