はじめに
今回は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>