.NET Frameworkでカバレッジ計測のレポートを出力する方法
環境
- Windows 10 64bit
- Visual Studio 2022 Enterprise
- .NET Framework 4.8
- ASP.NET Webアプリケーション
- MSTest
事前準備
下記をnugetでインストールする
| パッケージ | 説明 |
|---|---|
| ReportGenerator | カバレッジの結果を HTML 形式のレポートに変換するツール |
| Microsoft.CodeCoverage | Visual Studioが出力したカバレッジファイルをXMLに変換するツール |
フォルダ構成
VisualStudio.sln
├─ プロダクト(ユニットテストの対象)
| └─ プロダクト.csproj
├─ ユニットテスト
| └─ ユニットテスト.csproj
├─ packages
| ├─ ReportGenerator.5.1.13
| | └─ tools
| | └─ net47
| | └─ ReportGenerator.exe
| └─ Microsoft.CodeCoverage.17.4.1
| └─ build
| └─ netstandard2.0
| └─ CodeCoverage
| └─ CodeCoverage.exe
└─ TestResults
└─ GUID
└─ <カバレッジファイル名>.coverage
手順
- Visual Studioで、カバレッジを計測する。(.coverage生成)
[テスト]タブ > [すべてのテストのコードカバレッジの分析]を実行する
- 1で生成されたカバレッジファイルをXMLファイルに変換する。(.coverage ⇒ .XML)
CodeCoverage.exe analyze /output:XMLファイルパス <カバレッジファイル名>.coverageファイルパス - 2で変換したXMLファイルをHTML形式でレポート出力する。(.XML ⇒ .html)
ReportGenerator.exe -reports:XMLファイルパス -targetdir:レポート出力先 -reporttypes:Html
経緯(解決までの道のり)
- Visual Studioが出力するカバレッジファイルでは、Visual Studioがないとカバレッジ結果が見られない。(Visual Studio Enterpriseのため、Visual Studioのカバレッジ分析を利用した)
- そこで、.NETの開発時に使用したことがあるReportGeneratorを使ってみた。
- ReportGeneratorでVisual Studioが出力したカバレッジファイルを指定すると下記のエラーが表示された。
'<カバレッジファイル名>.coverage' is a binary format generated by a Visual Studio code coverage tool. Please convert to XML format with 'CodeCoverage.exe' (See: https://github.com/danielpalme/ReportGenerator/wiki/Visual-Studio-Coverage-Tools#codecoverageexe) - エラーメッセージに従い、CodeCoverageでXMLに変換したファイルを指定するとHTMLのレポート出力に成功した。