$Date: 2018-07-07 06:49:13 +0900 (2018/07/07 (土)) $
$Revision: 1347 $
OpenCover
.Net のカバレッジ計測ツールである OpenCover の使い方を説明します。
- カバレッジレポートの出力結果1
- カバレッジレポートの出力結果2
OpenCover のインストール
OpenCover を https://github.com/OpenCover/opencover/releases
から msi ファイルをダウンロードしてインストールします。
C:\Users\ユーザー名\AppData\Local\Apps\OpenCover にインストールされました。
PATH 変数にインストールフォルダのパスを追加します。
ReportGenerator のインストール
ReportGenerator を https://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 % になったことがわかります。