はじめに
Visual Studioのテストエクスプローラの結果をhtmlに変換するツールを作成したので共有します。
ツールの概要
ツールのリポジトリはこちらです。
https://github.com/HikosakaRyo/trxlog2html
インストール
NuGet.orgからインストールできます。
.NETグローバルツールとしてインストールする場合
dotnet tool install --global trxlog2html --version 1.0.0
.NETローカルツールとしてインストールする場合
dotnet new tool-manifest
dotnet tool install --local trxlog2html --version 1.0.0
※)グローバルツールとローカルツールの違いについては以下を参照してください。
https://docs.microsoft.com/ja-jp/dotnet/core/tools/global-tools
使い方
以下の手順で使用します。
- テストを実行してTRXログ(Visual Studio Test Result File)を出力します。
- 1のTRXログを、当ツールを使ってhtmlに変換します。
各手順の詳細は以下の通りです。
テストを実行してTRXログを出力する
通常のテストはVisualStudioのGUIから実行できるのですが、TRXログを出力するためには、テストをコマンドラインから実行する必要があります。
VisualStudioには、テストをコマンドラインから実行するためにVSTest.Console.exeというツールが同梱されています。
ツールはVisual Studioインストールディレクトリ配下にあるのですが、ディレクトリが深いため、パスを通すか以下のようなバッチを作成することをお勧めします。
@echo off
setlocal
REM VSTEST_DIRの部分を自分の環境に合わせてカスタマイズしてください
SET VSTEST_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow\
REM TEST_DLL_PATHに、テスト用DLLのパスを指定します
SET TEST_DLL_PATH=.\bin\Debug\.netcoreapp,version=v5.0\UnitTestSampleTests.dll
"%VSTEST_DIR%vstest.console.exe" %TEST_DLL_PATH% /logger:trx;LogFileName=utest_result.xml
endlocal
TRXログをhtmlに変換する
コマンドプロンプトから以下を実行します。
dotnet run trxlog2html -i [TRXログファイルのパス] -o [出力するhtmlのパス]
出力するhtmlのカスタマイズ
当ツールではRazorテンプレートエンジンを利用して最終的なhtmlを生成しています。
利用するテンプレートを差し替えることで、出力されるhtmlをカスタマイズすることが可能です。
テンプレートを指定する場合は、以下のように-tオプションにテンプレートのパスを指定してください。
dotnet run trxlog2html -i [TRXログファイルのパス] -o [出力するhtmlのパス] -t [テンプレートのパス]
以下は、デフォルトで使用されるテンプレートです。
色々いじって試してみてください。
https://github.com/HikosakaRyo/trxlog2html/blob/main/built_in_templates/jstest_like.cshtml
類似ツール
このツールをNuGetに公開したときに、似たようなツールを見つけたため、ついでにご紹介します。
私は試してみてはいないのですが、こちらはXSLTでTRXファイルをhtmlに変換しているっぽいですね。
RazorよりもXSLTのほうが使い慣れているという方は、こちらの利用を検討してもよいかもしれません。