もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
VisualStudio2022で書いたC#のコードをUnitTestするときに、VS2022の入っているPCでUnitTest実行するときにはテストエクスプローラーを使って実行したり、デバッグもできる。
こんな感じ。
ただ、今回は自分のVS2022の入ったPCではなくて、別のPCでUnitTestを実行し、かつデバッグしたい。
以前、別のPCでvstest.console.exeを使ってUnitTestする方法を調べたが、それに加えてデバッグ(breakを張って止めたり、その時の変数値を見たり)したい。
前提
VisualStudio2022 .NET6
必要ツールのダウンロードページ
https://visualstudio.microsoft.com/ja/downloads/
そこから、下記をダウンロード、インストールしておく。
- テストエージェント
→Agents for Visual Studio 2022 - リモートデバッグツール
→Remote Tools for Visual Studio 2022
やり方
まずset VSTEST_HOST_DEBUG=1
を行ってから、vstest.console.exe
を実行する。
サンプルバッチとアタッチのしかた
TestProject1.dll
というUniTestのdllを使ってテスト実行するとして、
そのdllと同じフォルダに下記のようなバッチを置いて、実行する。
(実行するのは、VSの入っているPCではなくテスト対象のPC上。)
cd %~dp0 set VSTEST_HOST_DEBUG=1 set VSTEST="C:\Program Files (x86)\Microsoft Visual Studio\2022\TestAgent\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" %VSTEST% "TestProject1.dll" /platform:x64 /inIsolation /Logger:trx pause
テスト対象のPC上でバッチを実行すると、UnitTest実行しているコマンドプロンプト上で
ホスト デバッグが有効です。続行するにはデバッガーをテスト ホスト プロセスにアタッチしてください。 Process Id: 7096, Name: testhost
と表示される。(上記のように出てきて待ってくれるので、UnitTestのコードにアタッチ用の待ち処理を入れる必要はない)
ここで、VisualStudioが入ったほうのPCから、
メニュー > [デバッグ] > [プロセスにアタッチ]
を押し、リモートPCのアドレスを選択して、上で出たプロセスにアタッチする。
これで、テスト対象のPC上で実行されているUnitTestにアタッチができた。
参考
テストエージェントとリモートデバッグツールのダウンロードページ(MS)
Download Visual Studio Tools - Install Free for Windows, Mac, Linux
以前の記事(vstest.console.exeで別PCでUnitTest)
【C++】UnitTest(C ++用Microsoft単体テストフレームワーク/vstest.Console.exe)の使い方概要 - Qiita
以前の記事(リモートデバッグのやり方)