C#, Python, Web開発

プログラミングやデータ分析のことなどを書いています。

C# カバレッジレポートをHTMLで出力

C# のテストを実行して、カバレッジレポートを生成する方法を書いていきます。

※ Windows 端末で動作確認をしています。

前提

今回は、事前に ReportGenerator をグローバルにインストールしています。

dotnet tool install -g dotnet-reportgenerator-globaltool

資源の構成

動作確認用に使った資源の構成は以下の通りです。

Cov/  … ソリューションフォルダ
  - Cov.Core/  … ライブラリプロジェクト
  - Cov.Core.Tests/  … テストプロジェクト(xUnit)
  - Cov.slnx
  - coverage-exec.bat
  - coverlet.runsettings

coverage-exec.bat を実行すると、テストとレポート生成を行うようにします。

カバレッジ設定の作成

coverlet.runsettings を以下の内容で作成します。

<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="XPlat code coverage">
        <Configuration>
          <Format>cobertura</Format>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

バッチファイルの作成

coverage-exec.bat を以下の内容で作成します。

@echo off

if exist "TestResults" rmdir /s /q "TestResults"
if exist "coveragereport" rmdir /s /q "coveragereport"

dotnet test Cov.slnx --collect:"XPlat Code Coverage" --settings ".\coverlet.runsettings" --results-directory "TestResults"

reportgenerator -reports:"TestResults\**\coverage.cobertura.xml" -targetdir:"coveragereport" -reporttypes:Html

dotnet test の実行後に、reportgenerator を使ってレポートを生成します。

実行・確認

バッチファイルを実行すると、coveragereport フォルダの下にレポートが出力されます。

Cov\coveragereport\index.html

下の画像は、上の HTMLファイルをブラウザで開いたイメージです。