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=""$(PartCoverPath)\PartCover.exe" --settings="$(MSBuildProjectDirectory)\PartCoverSettings.xml" --output="$(PartCoverResultPath)\PartCoverResult.xml"" /> </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
・別のツールにどうやって実行させるのか