NUnit、PartCover を組み合わせた MSBuild ファイル(.proj) を作る (個人的なメモ)

Part Cover 紹介 その4 - ビルドに組み込む。MSBuild から Part Cover console を実行する - お だ のスペース に載せているような、PartCover 用の MSBuild ファイル(.proj) を生成する何かを作れないかな〜と考えてます。

こんな感じ。(あくまでも例です。実際に動かしてないので、エラーになるかもしれません)

Report.proj

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Report" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <PropertyGroup>
 <!-- PartCoverのパス 2012/01/17 新しいバージョンに変更 -->
 <!-- <PartCoverPath>C:\Program Files\Gubka Bob\PartCover .NET 2</PartCoverPath> -->
 <PartCoverPath>C:\Program Files\PartCover\PartCover .NET 4.0</PartCoverPath>
 <ProjectName>Hoge</ProjectName>
 <BuildConfig>JenkinsBuild</BuildConfig>
 <TestResultPath>$(MSBuildProjectDirectory)\TestResult</TestResultPath>
 <PartCoverResultPath>$(MSBuildProjectDirectory)\PartCoverResult</PartCoverResultPath>
 </PropertyGroup>
 <!-- プロジェクトをリビルドする -->
 <Target Name="Rebuild">
 <Message Text="Rebuild" />
 <MSBuild Projects="$(MSBuildProjectDirectory)\$(ProjectName).sln" 
Targets="Rebuild;" Properties="Configuration=$(BuildConfig);" />
 </Target>
 <!-- PartCover を実行する -->
 <Target Name="CreateReport">
 <Message Text="Exec PartCover" />
 <Exec Command="&quot;$(PartCoverPath)\PartCover.exe&quot; --settings=&quot;$(MSBuildProjectDirectory)\PartCoverSettings.xml&quot; --output=&quot;$(PartCoverResultPath)\PartCoverResult.xml&quot;" />
 </Target>
 <!-- レポートビルドターゲット -->
 <Target Name="Report" DependsOnTargets="CreateReport;" />
 <Target Name="ReportBuild" DependsOnTargets="Rebuild;CreateReport;" />
</Project>

PartCoverSettings.xml

<PartCoverSettings>
 <Target>C:\Program Files\NUnit 2.5.9\bin\net-2.0\nunit-console.exe</Target>
 <TargetWorkDir>.\Test.dll</TargetWorkDir>
 <TargetArgs>Hoge.Test.dll Fuga.dll /run=Hoge.Common,Hoge.Model</TargetArgs>
 <Rule>+[Hoge]*</Rule>
 <Rule>-[Hoge*]Hoge.Resources*</Rule>
 <Rule>-[*.Test*]*</Rule>
</PartCoverSettings>

基本的には、プロジェクト個別の設定や、PartCover/NUnit のパスを環境毎に変更していけば良さそう。
PartCoverSettings.xml に設定する nunit-console へのパラメータを編集すれば、実行したいテストを切り替える事が出来るよね〜。

プロジェクトごとに
1.基本となる .proj と PartCoverSettings.xml を生成
2.実行したい NUnit テストを選択し、PartCoverSettings.xml を都度再生成

PartCover や NUnit の結果ファイルの加工はここでは考えていません。別のツール(Jenkins等)でレポート表示したらいいかなー位の考え。*1
あと、生成した .proj をどうやって実行するか考え中です。開発端末上で手動で実行するのは問題無いんですが、別のツール上で自動で動かす場合どうしようかなと。
・ビルドする/しない、ビルドする場合はソースをどうするのか(リポジトリから最新取る/取らない)*2
・別のツールにどうやって実行させるのか

*1:MSBuild のカスタムタスクで xslt 変換とかやれば、MSBuild 内で完結出来ますが

*2:一応全部 MSBuild で実行可能(カスタムタスク使うけど…)