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を実行するために、OpenCoverはNUnitランナーに接続してレポートを生成し、レポートはすべての単体テストを実行します。これにより単体テストのxml出力を生成できますが、TeamCity 7.1に組み込まれているものと同じくらい優れたレポートを生成するための、フィルタリングおよび検索機能をはるかに下回るxslファイルをまだ見つけていません。
ただし、組み込みのNUnitランナーを使用してTeamCityでレポートを有効にすると(明らかに、TeamCityで単体テストレポートを取得する唯一の方法)、単体テストを再実行してレポートを生成します。
これはすべて機能しますが、私の質問は、すべての単体テストを2回実行しなくても、両方のレポートを取得する方法があるかどうかです。具体的には、OpenCoverはNUnitテストを実行せずにレポートを生成できますか、それともTeamCityは単体テストを実行せずにレポートを生成できますか?
これはASP.NETMVC3アプリケーションであり、OpenCoverのドキュメントでは、ASP.NETをアタッチする方法や、それが可能かどうかについては指定されていませんが、アタッチするために実行可能ファイルが必要であることは明らかです。重要な場合に備えて、NUnit2.6.1を使用していることにも注意してください。