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 サーバーと同じリポジトリからのプロトコルの種類とシリアル化コード。
挿入された MtpServerClient と IMtpServerClient の種類では、接続の初期化、テストの検出、テストの実行、サーバーの終了の要求、テスト ノードの更新の報告を行うことができます。 型は、アセンブリ内で internal のままです。
クライアント要件を満たす
C# 12 以降を使用します。 パッケージは、プロジェクトで言語バージョンが指定されていない場合に12.0にLangVersionを設定します。 また、.NET Framework 4.6.2 および netstandard2.0 の内部互換性の種類も提供します。
内部型が重複しないようにパッケージを追加する前に、MTP クライアントの手書きコピーを削除します。
接続の動作を選択する
MtpServerClientOptions.IsStatefulを設定して、クライアントが要求間で状態を保持するかどうかをサーバーに通知します。
- 単一の検出または実行要求の後に終了するには、値を
falseのままにします。 - 同じ接続を介して複数の要求を送信するエディターまたは IDE セッションの値を
trueに設定します。
クライアントは、試験的な capabilities.testing.isStateful プロトコル機能を介してこの設定を送信します。
こちらも参照ください
.NET