はじめに
これはVisual Studio Team Serviceアドベントカレンダー19日目の記事です。
今まであまり触れてきませんでしたが、VSTSで単体テストを実施するとテストの成功率やカバレッジの記録が採取できます。これを履歴で見るとカバー率の履歴が分かります。どんな感じで表示されるのか、紹介します。
.NETでやっていますが、JavaであってもJaCoCoのコードカバレッジ形式に対応しているので、ほぼ同じことができるはずです。
テストタスクを構成する
Visual Studio Testというタスクがあるので追加します。設定できるところは非常に多いのですが、重要なポイントだけ解説します。
vstestが認識するテスト結果のフォーマットを指定します。JUnit, NUnit, VSTest, XUnitが選択できます。
テストアダプターのバージョンが特定のものでないといけない場合に指定します。通常はlatestで構いません。
setting fileはテストの実行時フィルタリングや明示的に設定を与えたい場合に指定します。通常、.runsettingsというファイルです。フォーマットはこちらを見てください。
.runsettings ファイルを使用して単体テストを構成する | Microsoft Docs
テストを並列や複数のマシンで実行する設定です。ここはマルチフェーズビルドを実施する際に指定します。通常はチェックなしで構いません。
Run test in isolationはテスト実行時の分離モードを指定します。テストによっては指定しないと警告が出ますが、遅くなることがあります。
Code coverage enabledはコードカバレッジを取得します。ユニットテストであれば指定することをお勧めします。ただし、.NET Coreではまだコードカバレッジを採取する仕組みがないはずなので、実行しても無視されます(山のようにリクエストは出ています)。
Select test usingにはTest assemblies, Test plan, Test runが選択できます。ユニットテストではTest assembliesを選択すれば自動的に対象の名前(Testsに一致するプロジェクトが生成するアセンブリ)をユニットテストと認識して実行します。
Test planはいわゆる自動テストです。Testハブからテスト計画を作ってテスト対象プログラムを自動実行します。
Test Runはテスト実行らしいのですが…どうも、テストの実行IDを指定して履歴を見るような感じなんでしょうか。まだ使ったことがないのですが、こちらを見てください。
Run automated tests from test plans in the Test hub VSTS and TFS | Microsoft Docs
テストは実行するだけでは品質データとして蓄積されません。Publish Test Resultsタスクを使ってVSTSに発行します。
テスト計画を作る
Test Planを選択した時、TestハブでPlanを作ります。Planの名前とArea Path, Iterationを指定します。
Planを作った後はテストケースを構築します。テストのシナリオを作り、具体的なステップを書いていきます。CI/CDアドベントカレンダーからははずれるので、深入りしませんが、ドキュメントを参考にどうぞ。
ビルドと品質レポート
ビルド時にカバレッジとテスト結果を発行していると、TestタブにUnitTestの結果が表示されます。このときはテストケースが一つだったので、Test数が1で100%成功ですね。
Summaryにはコードカバレッジの結果も出ています。ブロックで50%、ソースコード行数で58%カバーしています。
テストケースを一つ増やして2にすると、ブロックが57.89%, ソースコード行数が64.71%に向上しました。赤枠で囲んでいるところでカバレッジが上がったことが分かります。
Download codecoverageをクリックすると、Visual Studioで開けるコードカバレッジ結果ファイルがダウンロードされます。
未カバー率が100%のところがあるので、ダブルクリックすると、Visual Studioで該当ソースコードが開きます。
赤で塗られているところが未カバー範囲で、薄い水色がテストでカバーされているところになります。