C#の単体テストのカバレッジを計測するのにOpenCoverを使用しています。複数のテストプロジェクトの結果をまとめる方法を調べたのでそのメモ。

環境


  • MSTest (VisualStudio 2015付属)
  • OpenCover v4.6.519

やりかた


2つめ以降のレポートを出力する際に、引数に-mergeoutputオプションをつけて-outputオプションにまとめたい先のレポートを記述するだけ。
具体的には下記のような感じ。

1
2
3
4
5
//一つ目のレポート
- .\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -register:user -target:"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" -targetargs:"/noisolation /testcontainer:""MyTest.dll" -targetdir:".\Test\bin\Release" -excludebyattribute:*.ExcludeFromCodeCoverage* -hideskipped:All -output:Cover_result.xml

//2つ目レポート
- .\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -register:user -target:"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" -targetargs:"/noisolation /testcontainer:""MyTest2.dll" -targetdir:".\Test\bin\Release" -excludebyattribute:*.ExcludeFromCodeCoverage* -hideskipped:All -mergeoutput -output:Cover_result.xml

こう書くことで2つ目のレポートの結果もCover_result.xmlに集約される。
これができるようになったのは何個か前のバージョン(4.*)からのようなので、古いバージョンではできない。

しかし、オプションが多すぎて一行でかくのツラすぎ~