【问题标题】:How do I run OpenCover + NUnit in TeamCity without running all unit tests twice?如何在 TeamCity 中运行 OpenCover + NUnit 而不运行所有单元测试两次?
【发布时间】:2012-08-17 00:56:16
【问题描述】:

我在我的 MSBuild 脚本中设置了 OpenCover,设置了 ReportGenerator,并将其作为工件输出并有一个自定义选项卡 - 所有这些都很好。这是我的 MSBuild 目标:

<Target Name="Test">

        <!-- Check Code Coverage -->
        <Exec Command="..\..\tools\OpenCover.4.0.519\OpenCover.Console.exe -register:user -target:..\..\tools\NUnit\nunit-console.exe -targetargs:&quot;$(TestAssemblies) /xml=NUnitReport.xml /noshadow&quot; -filter:&quot;+[HelloWorld.Mvc3UI*]* -[HelloWorld.Mvc3UI.UnitTests*]*&quot; -output:OpenCoverReport.xml"></Exec>

        <!-- Format Code Coverage Report -->
        <Exec Command="..\..\tools\ReportGenerator.1.5.0.0\ReportGenerator.exe OpenCoverReport.xml OpenCoverReport"></Exec>

</Target>

但是,为了运行 OpenCover,它会附加到 NUnit 运行器以生成报告,然后运行所有单元测试。虽然这可以为单元测试生成 xml 输出,但我还没有找到一个 xsl 文件来生成与 TeamCity 7.1 中内置的报告一样好的报告,更不用说过滤和搜索功能了。

但如果我使用内置的 NUnit 运行程序在 TeamCity 中启用报告(显然这是在 TeamCity 中获取单元测试报告的唯一方法),它会重新运行单元测试以生成其报告。

虽然所有这些都有效,但我的问题是,是否有一种方法可以在不必运行所有单元测试两次的情况下获得这两个报告?具体来说,OpenCover 是否可以在不运行 NUnit 测试的情况下生成其报告,或者 TeamCity 是否可以在不运行单元测试的情况下生成其报告?

请注意,这是一个 ASP.NET MVC3 应用程序,OpenCover 文档没有指定如何附加 ASP.NET 或是否可能,但很明显它需要附加一个可执行文件。另请注意,我正在使用 NUnit 2.6.1,以防万一。

【问题讨论】:

  • 为什么不使用dotCover?这是一个很棒的工具,随 TeamCity 免费提供。
  • 感谢您的提示 - 我没有意识到 TeamCity 是免费的。
  • 没问题,但是对于Opencover测试的情况,请在下面回答。

标签: msbuild continuous-integration nunit teamcity opencover


【解决方案1】:

您可以使用“构建功能”导入 NUnit xml 报告,如下面的屏幕截图所示:

【讨论】:

  • 我可以在 CC.NET 中使用它吗?
猜你喜欢
  • 1970-01-01
  • 2011-09-14
  • 2010-12-26
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多