次の方法で共有


.NET 用 GitHub Copilot テストの概要

.NET 用の GitHub Copilot テストは、Visual Studio に統合された GitHub Copilot Chat の新機能です。 この機能により、プロジェクト、ソリューション、ファイル、クラス、またはメンバー全体の C# コードの作成、実行、テストが自動化されます。 これは、すべてのテスト ケースを手動で記述することなく、包括的なテスト カバレッジをすばやくブートストラップする C# 開発者向けに設計されています。 GitHub Copilot テストでは、xUnit、NUnit、MSTest テスト フレームワークのテストを生成できます。

Copilot エージェント モードでの 1 回限りのプロンプトとは異なり、.NET 用の GitHub Copilot テストでは、テスト生成専用に設計されたガイド付きの長時間実行エクスペリエンスが提供されます。 C# コンパイラと言語セマンティクスに根付いた確定的な結果が生成され、コードベース、ファイル構造、およびテスト規則を深く認識して、予測可能でコンテキストに適したテストが保証されます。

[前提条件]

.NET 用の GitHub Copilot テストには、有料の GitHub Copilot サブスクリプション (個人、ビジネス、または企業) が必要です。 無料の Copilot サブスクリプションはサポートされていません。

.NET に GitHub Copilot テストを使用する理由

.NET 用の GitHub Copilot テストは、テストの生成に関連するより一般的な Copilot 機能と比較して包括的なエクスペリエンスを提供します。 GitHub Copilot for .NET の単体テスト機能には、次のものが用意されています。

  • 効率: 大規模または小規模のプロジェクトまたはソリューションの C# 単体テストを自動的に生成、ビルド、実行します。
  • 一貫性: テストがベスト プラクティスとプロジェクト標準に従っていることを確認します。 テストはソリューション内の別のテスト プロジェクトで作成され、xUnit、NUnit、MSTest フレームワークを使用して生成されます。 ソリューションに NUnit または xUnit に単体テストが既にある場合、.NET 用の GitHub Copilot テストでは、同じ単体テスト フレームワークで新しいテストが生成されます。 ソリューションに単体テストがない場合は、MSTest を使用して新しいテストが生成されます。
  • 統合: Visual Studio 内でシームレスに動作し、Copilot の AI 機能を活用します。
  • 予測: Copilot は、C# コンパイラと言語セマンティクスに根差して確定的にテストを生成しているため、アサーションとエッジ ケースは予測可能でタイプ セーフです。

主な機能

  • 大規模な自動テスト生成: 1 つのファイル、1 つのプロジェクト内の複数のファイル、またはソリューション全体のテストを作成します。
  • コマンド ベースの操作: サポートされているコマンドとパラメーターを使用します (GitHub Copilot テストの /help メッセージに記載されています)。
  • 柔軟なプロンプト: 構造化 @Test #<target> 構文または自由形式の自然言語プロンプトを使用して、テストする内容を記述します。

GitHub Copilot テストでできること

この機能を有効にすると、GitHub Copilot テストは、いくつかの方法でソリューションと対話してテストを生成および検証します。

  • 読む: Copilot は、ソース コードとプロジェクト構造を分析して、コンテキストと依存関係を理解します。
  • 書く: 提案に基づいて、ソリューション内のテスト ファイルが作成または更新されます。
  • 建てる: このツールはビルドをトリガーしてコードをコンパイルし、生成されたテストが正しく統合されていることを確認します。
  • 実行する: テストを実行して合格を確認し、カバレッジと品質に関するフィードバックを行います。

Important

Copilot テストは、テスト生成プロセスの外部で運用コードを変更しません。 すべての変更はローカル開発環境内で行われ、提案を確認、受け入れる、または破棄するためのフル コントロールを保持します。

@Test エージェントによって実行されるアクション

@Test エージェントは、テストの生成中にさまざまなアクションを実行します。 これらのアクションを理解することは、ツールを使用する際に何を期待するかを理解するのに役立ちます。

ビルド操作とテスト操作

エージェントは、( dotnet restoredotnet testなどのコマンドライン ツールではなく) Visual Studio API を使用して、次の操作を実行します。

  • 復元とビルド: パッケージを復元し、スコープに基づいてプロジェクトをビルドします (1 つのプロジェクトからソリューション全体まで)。
  • テストの実行: 主に生成されたテストのみを実行します。 ただし、初期および結果のコード カバレッジ (およびカバレッジ最適化モード) を計算するために、エージェントは指定されたスコープ内のすべてのテストを実行します。
  • Git diff の処理: 差分モード (#git_changes) を使用すると、エージェントによってコミットされていない変更が分析され、対象となるテストが生成されます。

パッケージ インストール

エージェントは、必要に応じて NuGet パッケージをインストールします。

  • テスト フレームワーク パッケージ (MSTest、NUnit、または xUnit)
  • まだ存在しない場合、モックフレームワークパッケージを準備する
  • Microsoft Test Platform (MTP) のカバレッジと TRX 拡張機能 (未存在の場合)

LLM 操作

エージェントは、次の場合に LLM 呼び出しを行います。

  • フリーフォーム プロンプト分析
  • 概要処理
  • テストの生成

プロジェクトとファイルの変更

ターゲット コード用のテスト プロジェクトが存在しない場合は、エージェントによって作成されます。

エージェントは、次の保証を持つカスタム ファイル システムを使用します。

  • スコープ: エージェントはリポジトリ ルートの外部 (ログを除く) でファイルの読み取りまたは書き込みを行うことはありません。
  • 読み取り専用設定: 可能な限り、エージェントは書き込みアクションを禁止する読み取り専用ファイル システムを使用します。

エージェントは、次のファイルに書き込むことができます。

  • プロジェクト ファイルをテストする
  • ソース プロジェクト ファイル (たとえば、 InternalsVisibleTo 属性の追加)
  • ソリューション ファイル (プロジェクトの追加時など、Visual Studio API を介して間接的に)
  • ソース ファイルをテストする

セキュリティの警告

初めて .NET 用の GitHub Copilot テストを実行すると、Copilot は LLM で生成されたコードをコンピューター上で実行するための同意を要求します。 これには、NuGet パッケージのインストールや復元、テストの実行などのアクションが含まれる場合があります。 一般的な同意を与えない場合、GitHub Copilot テストでは、そのような操作を実行する前に明示的な承認を求められます。

注意事項

同意すると、Copilot は Visual Studio セッション内で任意のコマンドをサイレントに呼び出すことができます。 Microsoft では、これらのコマンドの安全性を保証することはできません。 このスイッチは、サンドボックス環境内でのみ有効にする必要があり、その環境で使用できる特権を制限する手順を実行する必要があります。 たとえば、セキュリティで保護された環境では、クラウドに接続されたアカウントを使用して Windows にログインしないでください。また、非パブリック リポジトリへの読み取りアクセス権や運用リポジトリへの書き込みアクセス権を持つ特権を持つ GitHub アカウントを使用して、サンドボックス環境を Visual Studio にログインしないようにする必要があります。

次のステップ

Visual Studio の .NET 用 GitHub Copilot テストを使用したテストの生成と実行に関するページを参照してください。