我在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:"$(TestAssemblies) /xml=NUnitReport.xml /noshadow" -filter:"+[HelloWorld.Mvc3UI*]* -[HelloWorld.Mvc3UI.UnitTests*]*" -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。
答案 0 :(得分:7)
您可以使用“构建功能”导入NUnit xml报告,如下面的屏幕截图所示: