vstest.console.exeでUnitTestする(VisualStudio2022版)

もくじ

目次(WPF/xaml/C#/C++関連メモ) - tera1707’s blog

やりたいこと

VisualStudio2022で、UnitTestプロジェクトを作ってテストコード(UnitTest)を書くと、テストエクスプローラーからテストを実行することができるが、そのテストコードをVisualStudioが入っているPCではなく、開発環境が入っていない別のPC上で実行したい。

前提

  • VisualStudio2022
  • MSTest(vstest.console)
  • C#で書いたdllをC#のUnitTestプロジェクトでテストする

やりかた

vstest.console.exeを使う。

ダウンロード

下記MSのページからダウンロードする。

visualstudio.microsoft.com

f:id:tera1707:20220202230642p:plain

VisualStudio2022用のツール、の中の、Agent for VisualStudio 2022Agentをダウンロードする。

ダウンロードして実行すると、VisualStudio Installerが起動するのでインストールする。

f:id:tera1707:20220202230914p:plain

コード作成とUnitTest実行手順

ソリューション作成

実験用のソリューションの構成は下記のように作った。

f:id:tera1707:20220202232535p:plain

※UnitTestのコードの書き方などはここでは割愛。下記ページなどを参照。

qiita.com

qiita.com

実行用バッチ

上記の構成の中の、テスト用のプロジェクトをビルドすると、出力先フォルダに「TestProject1.dll」が作成されるが、それがUniTest実行するために必要なdll。

テストするためには、vstest.console.exeにそのTestProject1.dllを食わせる必要がある。

下記のようなバッチを作成し実行して、それを行う。
(TestProject1.dllが出来上がるフォルダに、下記のバッチも置いて実行する)

rem 対象のUnitTestのdll名
set TESTDLL="TestProject1.dll"

rem TestAgent2022のみインストールしている場合はこちら
set VSTESTPATH="C:\Program Files (x86)\Microsoft Visual Studio\2022\TestAgent\Common7\IDE\Extensions\TestPlatform\vstest.console.exe"
rem VisualStudio2022をインストールしている場合はこちらにもある
rem set VSTESTPATH="C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"

rem テスト実行
%VSTESTPATH% %TESTDLL% /platform:x64 /inIsolation /Logger:trx
pause

VisualStudioが入っていないPCにTestAgentのみ入れた場合は、上記バッチの場所にある。

VS2022入ってる場合は、remでコメントアウトしたほうのパスにもある。どちらを使っても同じ。

結果

バッチを実行すると、下記のような結果がdos窓上に表示される。

f:id:tera1707:20220202232901p:plain

参照

TestAgentダウンロード先

visualstudio.microsoft.com

以前、.NetFramework4.8のときにUnitTestをしたときの記事

qiita.com