Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 1 year has passed since last update.

[Coverage] VisualStudio2022とOpenCoverでカバレッジを取る

Posted at

もくじ
https://tera1707.com/entry/2022/02/06/144447

やったこと

必要パッケージを入れる

まずnugetでUTのプロジェクトに下記のパッケージを入れる。

  • ReportGenerator.4.8.7
  • OpenCover.4.7.922

※バージョンはほかのVerでもよいと思われる。今回は上記で実施。

バッチファイルを作成

下記のようなバッチファイルを作成し、ソリューションのフォルダの中に置く。

set MSTEST="C:\Program Files (x86)\Microsoft Visual Studio\2019\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"
rem OpenCover のインストール先
set OPENCOVER="..\src\packages\OpenCover.4.7.922\tools\OpenCover.Console.exe"
rem ReportGenerator のインストール先
set REPORTGEN="..\src\packages\ReportGenerator.4.8.7\tools\net47\ReportGenerator.exe"
rem 実行するテストのアセンブリ
set TARGET_TEST="UniTest.dll"
rem 実行するテストのアセンブリの格納先
set TARGET_DIR="..\src\UniTest\bin\x64\Debug"
rem カバレッジ計測対象の指定
set FILTERS="+[*]* -[UniTest*]*"
rem 除外する属性(Attribute)
set EXCLUDE_ATTR="*.ExcludeFromCodeCoverage*"
rem OpenCover の出力ファイル
set OUTPUT="coverage.xml"


%OPENCOVER% -register -target:%MSTEST% -targetargs:%TARGET_TEST% -targetdir:%TARGET_DIR% -filter:%FILTERS% -excludebyattribute:%EXCLUDE_ATTR% -output:%OUTPUT% -log:Info
rem レポートの生成 (xml から html へ変換)
echo htmlレポート作成します
%REPORTGEN% -reports:%OUTPUT% -targetdir:%OUTPUT_DIR%

注意

上記を試した時点では、.NET Frameworkで試していて、パッケージの管理形式がPackage.configだった。

image.png

なので、ソリューションのフォルダの中にPackageフォルダができて、その中にnugetしたもの一式が入っていた。

そのため、nugetしたexeの保存場所を示す、バッチ中のOPENCOVERREPORTGENが、相対パスで、ソリューションのフォルダの中の各exeを指すようになっている。

が、おそらく今の.NET6(2023年4月)時点では、パッケージの管理形式が「PackageReference」が主流だと思うので、その場合はnugetしたexe達は、ソリューションの中ではなく全ソリューション共通で、ユーザーのフォルダの下記のようなパスに入ると思われる。

C:\Users\masa\.nuget\packages\パッケージ名・・・

その場合は、OPENCOVERREPORTGENを、PackageReferenceに合うようにフォルダパスを書くこと。

参考

下記を参考にさせて頂いた。(バッチの書き方等)

計測対象をFILTERSパラメータで絞る方法など

C0,C1,C2とか

OpenCoverはC1:分岐網羅率カバレッジらしい。(条件分岐に注目して、条件式のすべての組み合わせをテストするカバレージのこと)

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?