サーバー モード

MTP サーバー モードを使用すると、エディター、IDE、またはその他のテスト ツールがテスト アプリケーションを起動し、JSON-RPC を介して検出と実行を実行できます。 MTP を中心にツールを構築する場合は、サーバー モードを使用します。 通常のコマンド ラインと CI の実行では、テスト アプリケーションを直接実行するか、 dotnet testを使用します。

--serverまたは--server jsonrpcでパブリック JSON-RPC サーバーを起動します。

Important

.NET SDK は、--server dotnettestcliを介して個別の内部バイナリ プロトコルを使用します。 その値を自分で渡さないでください。 dotnet test は、トランスポートとプロトコルの引数を構成します。

ソースのみのクライアントを使用する

MTP 2.4.0 以降では、Microsoft。Testing.Platform.ServerMode.Client.Sources パッケージは、JSON-RPC プロトコル用の正規クライアントを提供します。 パッケージは、ランタイム アセンブリを追加する代わりに、C# ソースをプロジェクトに挿入します。

ソースのみの設計では、次の機能が提供されます。

  • ランタイム DLL または追加のデプロイ依存関係はありません。
  • Native AOT 対応の、リフレクションを使用しないシリアル化。
  • MTP サーバーと同じリポジトリからのプロトコルの種類とシリアル化コード。

挿入された MtpServerClientIMtpServerClient の種類では、接続の初期化、テストの検出、テストの実行、サーバーの終了の要求、テスト ノードの更新の報告を行うことができます。 型は、アセンブリ内で internal のままです。

クライアント要件を満たす

C# 12 以降を使用します。 パッケージは、プロジェクトで言語バージョンが指定されていない場合に12.0LangVersionを設定します。 また、.NET Framework 4.6.2 および netstandard2.0 の内部互換性の種類も提供します。

内部型が重複しないようにパッケージを追加する前に、MTP クライアントの手書きコピーを削除します。

接続の動作を選択する

MtpServerClientOptions.IsStatefulを設定して、クライアントが要求間で状態を保持するかどうかをサーバーに通知します。

  • 単一の検出または実行要求の後に終了するには、値を false のままにします。
  • 同じ接続を介して複数の要求を送信するエディターまたは IDE セッションの値を true に設定します。

クライアントは、試験的な capabilities.testing.isStateful プロトコル機能を介してこの設定を送信します。

こちらも参照ください