はじめに
今回はUnity公式パッケージであるCode Coverageを利用してTest Frameworkで実行したテストのコードカバレッジを計測する方法を紹介したいと思います。


Code Coverageとは
Code Coverageとはテストで用いられるコードがどれだけ実行されたかを示す指標です。
コード網羅率(コードもうらりつ、英: Code coverage、コードカバレッジ)は、ソフトウェアテストで用いられる尺度の1つである。プログラムのソースコードがテストされた割合を意味する。この場合のテストはコードを見ながら行うもので、ホワイトボックステストに分類される。
コード網羅率は体系的なソフトウェアテストのための技法として最初に生み出されたものの1つである。1963年の Communications of the ACM にある Miller と Maloney の論文に言及されているのが最初である。
概要
本パッケージではテストモード関係なくエディタが実行中であればCode Coverageを収集することができます。
このパッケージを使用して、自動テストからコードカバレッジデータとレポートをエクスポートできます。さらに、Code Coverage パッケージには Coverage Recording 機能があり、手動テスト時や、プロジェクトに自動テスト機能がない場合に、オンデマンドでカバレッジデータを取得することができます。
結果をHTMLとして出力することもできます。


Line Coverageを出してくれたり、実際のコードを表示しながら何回実行されたかを調べたりもできます。(赤色に表示されているところはカバーされていない箇所)
環境
Unity2019.3.0a8 or later
インストール方法
Unity Package Managerからインストールします。Add Package from git URL...からcom.unity.testtools.codecoverageと入力すればOKです。

セットアップ
Code Coverageを使うためにまずは設定が必要です。
メニューバーのWindow -> Analysis -> Code Coverageを選択し、Code Coverage Windowを立ち上げてください。

まずはCode Coverageのデータとレポート生成を有効にするために、Enable Code Coverageのチェックボックを有効にしてください。
Code Coverage Windowについて

詳細は以下の公式ドキュメントを参照してみてください。
Code Coverage window | Code Coverage | 1.2.5
今回のようにTest Frameworkでの計測結果(EditModeのみ)だけをレポートに出力したい場合は、Included Assembliesをテストに関係するアセンブリのみにすると良いでしょう。

EditMode・PlayModeでなくても計測することができますが、計測対象外のアセンブリが含まれていると見づらいので除いておく方が良いかと思います。
Test Runnerでレポートを作成する
Code Coverage WindowのAuto Generate Reportのチェックボックスをオンにしている状態でTest Runnerでテストを実行してみてください。
無事に実行が終わるとResults Locationで指定したパスにindex.htmlを含めたファイル群が生成されているはずです。index.htmlをChromeなどのブラウザで開くことで結果を見ることができます。

またReport History Locationで指定したパスには2024-02-18_20-47-46_CoverageHistory.xmlのような形式でファイルが生成され、以下のように結果が書き込まれています。
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <coverage version="1.0" date="2024-02-18_20-47-46" tag=""> <assembly name="Tests"> <class name="SampleTest" coveredlines="27" coverablelines="30" totallines="99" coveredbranches="0" totalbranches="0" /> </assembly> </coverage>