Windowsでのカバレッジ測定
OpenCoverageを使ってみた
どもです。
以前、OpenCppCoverageを使用してWindows上でカバレッジ測定する方法のエントリを書きました。
詳細は、下記のエントリを参照して下さい。
Windowsでのカバレッジ測定-OpenCppCoverageを使ってみた(1)
Windowsでのカバレッジ測定-OpenCppCoverageを使ってみた(2)
ところでこのツールと同じようなツールで、"OpenCoverage"というツールがあります。
これは、.NETのアプリケーションのカバレッジを測定するツールです。
今回のエントリでは、このOpenCoverageについて書きます。
0.作業環境
今回の開発環境は、下記の通りです。
VisualStudio | VisualStudioCommunity 2019 Version 16.8.3 |
---|---|
.NET Framework | Version 4.8.04084 |
1.インストール
OpenCoverageは、VisualStudioのNuGetから取得します。
NuGetパッケージ管理画面において、「OpenCover」と入力します。
その中の「OpenCover」を選択して、インストールします。
また、カバレッジのレポートを測定する「ReportGenerator」というツールも、同時にインストールしておきます。
コチラも、NuGetで取得ができます。
2.テストサンプル
今回は、以下のようなクラス/メソッドを対象にした単体テストを例にします。
なお、言語にはC#を選択しています。
2.1.テスト対象の関数
namespace OpenCoverageSample
{
public class TestTargetSample
{
public int Add(int a, int b)
{
return (a + b);
}
}
}
2.2.テストコード
また、これをテストするコードとして、以下のテストコードを適用します。
namespace OpenCoverageSample.Tests
{
[TestClass()]
public class TestTargetSampleTests
{
[TestMethod()]
public void AddTest_001()
{
var target = new TestTargetSample();
var res = target.Add(1, 2);
Assert.AreEqual(3, res);
}
[TestMethod()]
public void AddTest_002()
{
var target = new TestTargetSample();
var res = target.Add(2, 3);
Assert.AreEqual(5, res);
}
}
}
(内容は、ま、テキトーです。)
3.OpenCoverの実行
OpenCoverは、VisualStudio上からは実行できません(でした)。
なので、コマンドライン上から実行します。
しかしながら、OpenCoverに設定する項目が多いので、下記のようなbatファイルを用意します。
@echo off
rem OpenCoverのインストール先
SET OPEN_COVER=E:\development\OpenCoverageSample\packages\OpenCover.4.7.922\tools
rem Report生成ツールのインストール先
SET REPORT_GEN=E:\development\OpenCoverageSample\packages\ReportGenerator.4.5.3\tools\net47
rem テストフレームワークのインストール先
SET MS_TEST=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
rem ターゲットアセンブリ
SET TARGET_TEST=OpenCoverageSampleTests.dll
rem ターゲットアセンブリの格納先
SET TARGET_TEST_DIR=E:\development\OpenCoverageSample\OpenCoverageSampleTests\bin\Debug
REM カバレッジ計測対象
SET FILTERS=+[OpenCoverageSampleTests*]*
REM パスの設定
SET PATH=%PATH%;%OPEN_COVER%;%MS_TEST%;%REPORT_GEN%
REM OpenCoverを実行
OpenCover.Console -register:user -target:"%MS_TEST%\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" -targetargs:"%TARGET_TEST%" -targetdir:"%TARGET_TEST_DIR%" -filter:"%FILTERS%" -output:result.xml
ここでは、OpenCover.ConsoleがOpenCoverの実行ファイルです。
OpenCoverでは、レポート作成の際に一度テストを実行します。
そのため、作成したテストを実行する方法を指定する必要があります。
VisualStudioで作成したテスト(DLL)は、「vstest.console.exe」を使用してコマンドラインから実行します。
なお、「MSTest.exe」ではテストを実行できません。
4.レポートの生成
OpenCoverでは、カバレッジはXML形式で出力されます。
なので、これをHTML形式に変換します。
変換には、ReportGeneratorを使用します。
使い方は、下記の通りです。
ReportGenerator --reports:result.xml --targetdir:html
これで、HTML形式のレポートが生成されます。
上記のコマンド例では、htmlという名前のディレクトリに生成されます。
このディレクトリのindex.htmlを表示することで、レポートが観られます。
実際のレポートは、こんなカンジです。
ラインカバレッジ部分は、こんなカンジ。
5.まとめ
今回は、OpenCoverというカバレッジを測定するツールについて記載しました。
OpenCoverを用いることで、これまで有償でしかできなかったC#でのカバレジ測定が可能になります。
OpenCoverは、VisualStuidで取得できる割に、別途コマンドラインで実行する必要があります。
VisualStudioの中で使うことができません。
そのため、使いにくさは否めません。
そのあたりは、今後の対応に期待です。
ではっ!
ex
OpenCoverに加えて、OpenCoverUIというツールがVisualStudioのMarketplaceで公開されています。
しかし、こちらはVisualStudio2015までしか対応していません。
このツールが、早いとこ新しいVisualStudioに対応することを願います。
ディスカッション
コメント一覧
まだ、コメントがありません