如何在TeamCity中运行OpenCover + NUnit而不运行所有单元测试两次?

时间:2012-08-21 16:09:06

标签: msbuild continuous-integration nunit teamcity opencover

我在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或者是否可以附加ASP.NET,但很明显它需要附加可执行文件。另请注意,如果重要,我正在使用NUnit 2.6.1。

1 个答案:

答案 0 :(得分:7)

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