連絡先 トップに戻る 最初に戻る 前に戻る 次に進む
$Date: 2017-05-06 22:21:48 +0900 (2017/05/06 (土)) $
$Revision: 1117 $

OpenCover

.Net のカバレッジ計測ツールである OpenCover の使い方を説明します。
  1. カバレッジレポートの出力結果1
  2. カバレッジレポートの出力結果2

OpenCover のインストール

OpenCoverhttps://github.com/OpenCover/opencover/releases から msi ファイルをダウンロードしてインストールします。
C:\Users\ユーザー名\AppData\Local\Apps\OpenCover にインストールされました。
PATH 変数にインストールフォルダのパスを追加します。

ReportGenerator のインストール

ReportGeneratorhttps://github.com/danielpalme/ReportGenerator/releases から ZIP ファイルをダウンロードして C:\Program Files (x86) 以下に展開します。
PATH 変数にインストールフォルダのパスを追加します。

テストプログラム

テストプログラムとして https://github.com/m-tmatma/OpenCoverTest を用意しました。
https://github.com/m-tmatma/OpenCoverTest.git を git clone して OpenCoverTest1\OpenCoverTest1.sln を開いてコンパイルします。
namespace OpenCoverTest1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Test");

            foreach (var str in args)
            {
                Console.WriteLine(str);
            }
        }
    }
}

OpenCover の実行

OpenCover.Console.exe を実行してターゲット exe を実行してカバレッジを計測します。
C:\gitwork\OpenCoverTest\OpenCoverTest1\bin\Debug>OpenCover.Console.exe -target:"OpenCoverTest1.exe" -register:user
Executing: C:\gitwork\OpenCoverTest\OpenCoverTest1\bin\Debug\OpenCoverTest1.exe
Test
Committing...
Visited Classes 1 of 1 (100)
Visited Methods 1 of 1 (100)
Visited Points 6 of 10 (60)
Visited Branches 1 of 1 (100)

==== Alternative Results (includes all methods including those without corresponding source) ====
Alternative Visited Classes 1 of 1 (100)
Alternative Visited Methods 1 of 2 (50)

ReportGenerator の実行 (HTML に整形)

ReportGenerator.exe を実行して HTML に整形します。
この例ではカレントディレクトリの html というフォルダに html を生成します。
C:\gitwork\OpenCoverTest\OpenCoverTest1\bin\Debug>ReportGenerator.exe  --reports:results.xml --targetdir:html
Loading report 'C:\gitwork\OpenCoverTest\OpenCoverTest1\bin\Debug\results.xml'
 Preprocessing report
 Initiating parser for OpenCover
  Current Assembly: OpenCoverTest1
Initializing report builders for report types: Html
Analyzing 1 classes
 Creating report 1/1 (Assembly: OpenCoverTest1, Class: OpenCoverTest1.Program)
 Creating summary
Report generation took 0.4 seconds

生成した html ファイル

生成した html ファイル です。
プログラムの引数を処理している箇所のパスが通っていないことがわかります。

OpenCover の実行 (コマンドライン引数を渡す場合)

-targetargs でコマンドライン引数をプログラムに渡します。
C:\gitwork\OpenCoverTest\OpenCoverTest1\bin\Debug>OpenCover.Console.exe -target:"OpenCoverTest1.exe" -register:user "-targetargs:test1 test2"
Executing: C:\gitwork\OpenCoverTest\OpenCoverTest1\bin\Debug\OpenCoverTest1.exe
Test
test1
test2
Committing...
Visited Classes 1 of 1 (100)
Visited Methods 1 of 1 (100)
Visited Points 10 of 10 (100)
Visited Branches 1 of 1 (100)

==== Alternative Results (includes all methods including those without corresponding source) ====
Alternative Visited Classes 1 of 1 (100)
Alternative Visited Methods 1 of 2 (50)

ReportGenerator.exe の実行 (出力フォルダを変更)

ReportGenerator.exe を再実行します。
C:\gitwork\OpenCoverTest\OpenCoverTest1\bin\Debug>ReportGenerator.exe  --reports:results.xml --targetdir:html2
Loading report 'C:\gitwork\OpenCoverTest\OpenCoverTest1\bin\Debug\results.xml'
 Preprocessing report
 Initiating parser for OpenCover
  Current Assembly: OpenCoverTest1
Initializing report builders for report types: Html
Analyzing 1 classes
 Creating report 1/1 (Assembly: OpenCoverTest1, Class: OpenCoverTest1.Program)
 Creating summary
Report generation took 0.4 seconds

生成した html ファイル

生成した html ファイル です。
カバレッジが 100 % になったことがわかります。