2013-05-16 20 views
27

私はOpenCoverとReportGeneratorの両方を使用することに戸惑いがあります。私はそれらを動作させる方法を理解するのに少し苦労しています。私はVS.NET 2012 'Professional'を使用しています。これは、組み込みユニットテストカバレッジツールにアクセスできないことを意味します。私もReSharperをインストールしましたが、 'dotCover'の別のユーティリティをお支払いしたくありません。ユニットテストカバレッジ結果を表示するには、OpenCoverとReportGeneratorをどのように使用しますか?

OpenCoverとReportGeneratorのように見えますが、私が必要としていることを実行して、 。まず、両方のナゲットパッケージをダウンロードするとき、私のターゲットプロジェクトは何ですか?私はマルチレイヤーアプリケーションを持っているので、私は単体テストプロジェクトが正しいと仮定していますか、それとも重要ですか?私はドキュメントでは、コマンドラインコマンドを使用してソリューションの/ bin(私が思う)を指しているだけなので、これらのダウンロードを特定のプロジェクトに追加する必要はないかもしれません(テストハーネス)。誰かが私にこのことが正しいかどうか教えてもらえますか?

私がそれらをインストールしたら、ユニットテストカバレッジメトリクスを取得しようとしています。パッケージに付属するドキュメントは、私が望むほど明確ではありません。これらのツールを一緒に使って歩くメトリックを得る良いブログ記事やリンクはありますか?

+1

OpenCoverにはこれまでにない最悪の文書があります。 – Hamed

答えて

37

あなたは

は、私はあまりにもテストカバレッジ結果を生成するレポート生成とオープンカバーを使用して、特定のプロジェクトにこれらを追加する必要はありません。 -register:ユーザー-target: "C:\プログラムファイル:これは私が

"\プログラムファイル(x86の)\ OpenCover \ OpenCover.Console.exe C" opencover使用してコード・カバレッジを生成するために使用するスクリプトです(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ mstest.exe "-targetargs:"/noisolation/testcontainer:\ "C:\\ bin \ Debug \ .dll \" /resultsfile:C:\ Reports \ MSTest \ .trx」-filter: "+ []" -mergebyhash -output:C:\レポート\ MSTestを\ projectCoverageReport.xml

注あなたの引数はエスケープする必要がある場合、引用符は、引数のwiを渡すこと、すなわち、 \ "c:\ program files \"

これは私がレポートジェネレータを実行するために使用するスクリプトです。

C:\ ReportGenerator \ binに\ ReportGenerator.exe -reports: "C:\レポート\ MSTestを\ projectCoverageReport.xml" -targetdir: "C:\レポート\コード・カバレッジ"

・ホープこれは役に立ちます。

+0

テストプロジェクトまたはメインプロジェクトの<プロジェクトパス>および<プロジェクト名>ですか? – reggaeguitar

+0

テストプロジェクト – SonalKhodiyar

9

これらのオープンソースツールを数年間使用した結果、OpenCoverとReportCoverを使用してユニットテストカバレッジメトリックを生成する方法に関する包括的な記事が最終的に作成されました。

ポストは.batファイルと次の操作を実行するのに必要なコマンドを作成する方法について説明します。

  • ReportGenerator
  • を使用して.htmレポートの生成OpenCover
  • を使用してユニットテストメトリックの出力レポートを生成しますユニットテストカバレッジ測定基準を解釈するための出力データの分析

Using OpenCover and ReportGenerator to get Unit Testing Code Coverage Metrics in .NET

3

チュートリアルのための@atconwayありがとうございました。 今後のアップグレードやプロジェクトの変更を容易にするために、.batスクリプトを少し更新しました。あなたのプロジェクトにこれらのnugetsを追加する必要がありNUnitのでOpenCover使用するために、要約

:ここ

  • OpenCover
  • NUnit.ConsoleRunner
  • ダニエル・パルメによってReportGenerator

とは、更新された.batファイル。 これを実行するには、プロジェクトのルートにある "設定"を編集し、.batファイルとしてスクリプトを保存するだけです。

@echo off 
REM ** Be sure to install these nugets: 
REM ** NUnit.ConsoleRunner 
REM ** OpenCover 
REM ** ReportGenerator 
REM ** 
REM ** All paths should be entered without quotes 

REM ** SET TestResultsFileProjectName=CalculatorResults 
SET TestResultsFileProjectName=<ANY_NAME> 

REM ** SET DLLToTestRelativePath=Calculator\bin\Debug\MyCalc.dll 
SET DLLToTestRelativePath=<VALID_PATH> 

REM ** Filters Wiki https://github.com/opencover/opencover/wiki/Usage 
REM ** SET Filters=+[Calculator]* -[Calculator]CalculatorTests.* 
SET Filters=<VALID_FILTERS> 

SET OpenCoverFolderName=OpenCover.4.6.519 
SET NUnitConsoleRunnerFolderName=NUnit.ConsoleRunner.3.6.1 
SET ReportGeneratorFolderName=ReportGenerator.2.5.6 

REM ***************************************************************** 

REM Create a 'GeneratedReports' folder if it does not exist 
if not exist "%~dp0GeneratedReports" mkdir "%~dp0GeneratedReports" 

REM Remove any previous test execution files to prevent issues overwriting 
IF EXIST "%~dp0%TestResultsFileProjectName%.trx" del "%~dp0%TestResultsFileProjectName%.trx%" 

REM Remove any previously created test output directories 
CD %~dp0 
FOR /D /R %%X IN (%USERNAME%*) DO RD /S /Q "%%X" 

REM Run the tests against the targeted output 
call :RunOpenCoverUnitTestMetrics 

REM Generate the report output based on the test results 
if %errorlevel% equ 0 (
call :RunReportGeneratorOutput 
) 

REM Launch the report 
if %errorlevel% equ 0 (
call :RunLaunchReport 
) 
exit /b %errorlevel% 

:RunOpenCoverUnitTestMetrics 
"%~dp0packages\%OpenCoverFolderName%\tools\OpenCover.Console.exe"^
-register:user^
-target:"%~dp0packages\%NUnitConsoleRunnerFolderName%\tools\nunit3-console.exe"^
-targetargs:"--noheader \"%~dp0%DLLToTestRelativePath%\""^
-filter:"%Filters%"^
-mergebyhash^
-skipautoprops^
-excludebyattribute:"System.CodeDom.Compiler.GeneratedCodeAttribute"^
-output:"%~dp0GeneratedReports\%TestResultsFileProjectName%.xml" 
exit /b %errorlevel% 

:RunReportGeneratorOutput 
"%~dp0packages\%ReportGeneratorFolderName%\tools\ReportGenerator.exe"^
-reports:"%~dp0GeneratedReports\%TestResultsFileProjectName%.xml"^
-targetdir:"%~dp0GeneratedReports\ReportGenerator Output" 
exit /b %errorlevel% 

:RunLaunchReport 
start "report" "%~dp0GeneratedReports\ReportGenerator Output\index.htm" 
exit /b %errorlevel% 
0

複数のテストコンテナにopencoverを設定するのは難しいことです。

このスマートPowershellスクリプトを使用すると、いくつかのアイデアが得られます。テストDLLを見つけて、出力に含まれるように名前空間にする方法:

https://github.com/rpokrovskij/opencover4vs.ps1/blob/master/opencover4vs.ps1

は、次の2つの主要なものを設定する必要があります。私はこのようにします:

$TestDllsPatterns = @(,'*\bin\Debug\Vse.*.Test.dll') 
$TestableCodeNamespacePatterns = @(,'*') 

私のテストは接頭語Vseから始まります。 Debug\netcore1.1\VseのようなフォルダからコアnUnitテストを除外するには、Debug\Prefixキーが必要です。

関連する問題