*

Windowsでのカバレッジ測定-OpenCoverageを使ってみた

公開日: : C#, 開発

どもです。
以前、OpenCppCoverageを使用してWindows上でカバレッジ測定する方法のエントリを書きました。
詳細は、下記のエントリを参照して下さい。
Windowsでのカバレッジ測定-OpenCppCoverageを使ってみた(1)
Windowsでのカバレッジ測定-OpenCppCoverageを使ってみた(2)
ところでこのツールと同じようなツールで、”OpenCoverage”というツールがあります。
これは、.NETのアプリケーションのカバレッジを測定するツールです。
今回のエントリでは、このOpenCoverageについて書きます。

0.作業環境

今回の開発環境は、下記の通りです。

項目スペック
OSWindows10 Pro(ver.1903)
CPUi7-8700
開発環境VisualStuioCommunity2019
Version 16.5.1
.NET Framework4.8.03752
メモリ16GB

1.インストール

OpenCoverageは、VisualStudioのNuGetから取得します。
NuGetパッケージ管理画面において、「OpenCover」と入力します。
その中の「OpenCover」を選択して、インストールします。
OpenCoverage_001
また、カバレッジのレポートを測定する「ReportGenerator」というツールも、同時にインストールしておきます。
コチラも、NuGetで取得ができます。
OpenCoverage_002

2.テストサンプル

今回は、以下のようなクラス/メソッドを対象にした単体テストを例にします。
なお、言語にはC#を選択しています。

2.1.テスト対象の関数

2.2.テストコード

また、これをテストするコードとして、以下のテストコードを適用します。

(内容は、ま、テキトーです。)

3.OpenCoverの実行

OpenCoverは、VisualStudio上からは実行できません(でした)。
なので、コマンドライン上から実行します。
しかしながら、OpenCoverに設定する項目が多いので、下記のようなbatファイルを用意します。

ここでは、OpenCover.ConsoleがOpenCoverの実行ファイルです。
OpenCoverでは、レポート作成の際に一度テストを実行します。
そのため、作成したテストを実行する方法を指定する必要があります。
VisualStudioで作成したテスト(DLL)は、「vstest.console.exe」を使用してコマンドラインから実行します。
なお、「MSTest.exe」ではテストを実行できません。

4.レポートの生成

OpenCoverでは、カバレッジはXML形式で出力されます。
なので、これをHTML形式に変換します。
変換には、ReportGeneratorを使用します。
使い方は、下記の通りです。

これで、HTML形式のレポートが生成されます。
上記のコマンド例では、htmlという名前のディレクトリに生成されます。
このディレクトリのindex.htmlを表示することで、レポートが観られます。
実際のレポートは、こんなカンジです。
OpenCoverage_003
ラインカバレッジ部分は、こんなカンジ。
OpenCoverage_004

5.まとめ

今回は、OpenCoverというカバレッジを測定するツールについて記載しました。
OpenCoverを用いることで、これまで有償でしかできなかったC#でのカバレジ測定が可能になります。

OpenCoverは、VisualStuidで取得できる割に、別途コマンドラインで実行する必要があります。
VisualStudioの中で使うことができません。
そのため、使いにくさは否めません。
そのあたりは、今後の対応に期待です。

ではっ!

ex

OpenCoverに加えて、OpenCoverUIというツールがVisualStudioのMarketplaceで公開されています。
しかし、こちらはVisualStudio2015までしか対応していません。
このツールが、早いとこ新しいVisualStudioに対応することを願います。

関連記事

python

Ev3開発サポートツール(4)-Pythonによるグラフ表示

どもです。 前回のエントリーで、VisualStudioCommunityでのPythonの開発環

記事を読む

no image

Objective-CからC++コードを呼び出す

どもどもです。 今回は、突然ながらMacに関係する投稿です。 ソフト関係のことを勉強していて

記事を読む

Qt_logo_2016

QtでRaspberryPi/GUI開発(2):ためしに時計を作ってみた(其の弐)

どもです。 前回のエントリーでは、ラジオボタンのグループ化と、選択されたボタンの特定方法まで記載し

記事を読む

toppers

C言語でEV3開発(27)-EV3にヒステリシス処理を実装してみた

どもです。 今回は、モーターから読み出した値に対するヒステリシス・フィルター処理です。 0.

記事を読む

raspberry-pi

ライブラリでRasPiのピンにアクセス(3)-割り込み対応

どもです。 少し間が空いてしまいましたが、RaspberryPiのピンをより簡便に使用するため

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きました。 今回からは、このタッ

記事を読む

raspberry-pi

RaspberryPi3を購入しました

どもです。 突然ですが、「Raspberry Pi3 model B」を購入しました。 今回のエ

記事を読む

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

Arduino_Logo

ホールセンサーの種類と使い方

どもです。 今回のエントリは、表題にある「ホールセンサー」についてです。 1.「ホールセンサ

記事を読む

no image

C言語でEV3開発(8)-opOUTPUT_POWERコマンド

どもです。 今回のエントリーでは、EV3でモーターを動かします。 なお、今回のエントリーでも

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

think_about_utest
VisualStudioで実行した単体テストの結果の出力(3)-テスト実行からレポート生成までをツールで自動化

どもです。 前々回、前回と、VisualStudio/C#での単

think_about_utest
VisualStudioで実行した単体テストの結果の出力(2)-出力ファイルの読める化

どもです。 前回の続きです。 前回は、VisualStud

think_about_utest
VisualStudioで実行した単体テストの結果の出力(1)-ファイルへの出力

どもです。 最近、VisualStudio/C#でよく開発してい

think_about_utest
単体テストの効率化を考える(6)-スタブの自動生成ツール

どもです。 「単体テストの効率化について考える」の6回目です。

think_about_utest
単体テストの効率化を考える(5)-スタブの自動生成への入力

どもです。 「単体テストの効率化について考える」の5回目です。

→もっと見る

PAGE TOP ↑