環境

  • 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

手順

  1. Visual Studioで、カバレッジを計測する。(.coverage生成)

    [テスト]タブ > [すべてのテストのコードカバレッジの分析]を実行する

  2. 1で生成されたカバレッジファイルをXMLファイルに変換する。(.coverage ⇒ .XML)
    CodeCoverage.exe analyze /output:XMLファイルパス <カバレッジファイル名>.coverageファイルパス
    
  3. 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のレポート出力に成功した。

参考サイト