GitHub Copilot Chat ビューを使用して単体テストを生成する

完了

Visual Studio Codeのチャット ビューは、GitHub Copilotを使用して単体テストを生成するための主要な場所です。 チャット ビューでは、テスト フレームワークを構成し、ファイルまたは選択範囲のテストを生成し、テストがプロジェクトの規則に一致するまで結果を絞り込むことができます。 このユニットでは、生成されたテストをテスト ファイルに直接書き込み、結果として得られるテストを実行し、エラーに対してすべて 1 つのチャット プロンプトから繰り返し実行する エージェント モードに焦点を当てます。 また、事前に Ask モード を使用して、ファイルを変更せずにテスト オプションを調べることもできます。

チャット ビューを開く

次のいずれかのオプションを使用してチャット ビューを開きます。

  • Ctrl + Alt + I (Windows// Linux) または Cmd + Alt + I (macOS)。
  • タイトル バーのGitHub Copilot アイコンを選択し、Toggle Chat を選択します。

[チャット] ビューがセカンダリ サイド バーで開き、送信するすべてのプロンプトに影響する 3 つの構成の選択肢が表示されます。

  • エージェント ターゲット: エージェントが実行される場所。 ワークスペース、ツール、モデルへのフル アクセス権を持つエディターでエージェントを対話形式で実行するには、[ ローカル] を選択します。
  • エージェント: AI がセッションに対して担う役割。 組み込みのローカル エージェントは 、AskPlan、Agent です
  • アクセス許可レベル: ツールとターミナル コマンドを呼び出すときのエージェントの自律性の量。 オプションには既定の承認承認のバイパス、およびオートパイロットがあります。

単体テスト生成の場合、推奨される開始点は、既定の承認を持つエージェントです。 エージェント モードでは、ファイルの編集、ターミナル コマンドの実行、テストの再実行を行うことができるため、"このメソッドのテストを生成する" などのプロンプトを表示し、確認する必要がある作業テスト ファイルを生成できます。 既定の承認では、各ツールの呼び出しを確認するように求めることで、ループを維持します。

必要に応じて、まず Ask モードを使用してテスト オプションを調べる

質問モードでは、ファイルを変更したりツールを呼び出したりすることなく、チャットで質問に回答します。 これにより、エージェントが何かを変更する前にアプローチを計画する場合に適しています。 次の場合は、Ask モードを使用します。

  • 構造体にコミットする前に、複雑なメソッドの候補テスト ケースを比較します。
  • カバーする価値のあるエッジ ケースと境界条件を特定します。
  • テスト フレームワークまたはアサーション スタイルの推奨事項を取得します。
  • ディスクに書き込まずに、チャットのテスト例を参照してください。

分析に Ask モードを使用するには:

  1. チャット ビューを開き、エージェント ピッカーから [Ask ] を選択します。

  2. 関連するファイルまたは選択範囲をコンテキストとしてアタッチします (たとえば、 #selection を使用するか、ファイルをドラッグします)。

  3. 分析の質問をする。 例えば: What edge cases should I cover when testing the CalculateDiscount method? List the scenarios and explain why each one matters.

  4. 応答を確認し、エージェント ピッカーを エージェント に切り替えて、実際のテストを生成します。

を使用してテスト フレームワークを設定する /setupTests

プロジェクトにテスト フレームワークがまだ構成されていない場合は、GitHub Copilotが推奨し、構成手順について説明します。 /setupTestsスラッシュ コマンドはどのエージェントでも機能しますが、エージェント モードではパッケージをインストールしてテスト プロジェクトを作成することもできます。

  1. チャット ビューを開き、エージェント ピッカーから [エージェント ] を選択します。

  2. チャット入力フィールドに /setupTests コマンドを入力します。

  3. エージェントが、パッケージをインストールし、テスト プロジェクトのひな形を作成し、Visual Studio Code のテスト用拡張機能を推奨するために提案するツール呼び出しとターミナル コマンドを確認します。

/setupTests は、新しいテスト プロジェクトを開始する場合や、まだテストを含まないプロジェクトをオンボードする場合に最も便利です。

を使用してテストを生成する /tests

/testsスラッシュ コマンドは、エディターで現在アクティブになっているコードの単体テストを生成します。 エージェント モードでは、生成されたテストは適切なテスト ファイルに直接書き込まれます。 GitHub Copilotは、既存のテスト フレームワークとコーディング スタイルを検出し、一致するテストを生成します。

ファイル全体のテストを生成するには:

  1. テストするアプリケーション コード ファイルを開きます。

  2. チャット ビューを開き、 エージェント が選択されていることを確認します。

  3. チャット入力フィールドに、「 /tests 」と入力し、その後に追加のガイダンスを入力します。 例えば: /tests Generate unit tests for the methods in this file. Include success, failure, and edge cases.

  4. エージェントがコンテキストの読み取り、テストの記述、および (必要に応じて) 実行に使用するツールの呼び出しを確認します。

  5. エージェントが適用した変更を確認します。

    エージェントは、既存のテスト ファイルが使用可能な場合にテストを追加するか、適切な場所に新しいテスト ファイルを作成します。 差分がエディターに表示されるので、各変更を確認できます。

  6. 変更を反映または破棄するには、[ 保持] または [元に戻す ] を選択します。

特定のメソッドまたはコード ブロックのテストを生成するには:

  1. アプリケーション コード ファイルを開きます。

  2. テストするメソッドまたはブロックを選択します。

  3. [チャット] ビューで、「 /tests 」と入力し、その後に選択内容を参照するガイダンスを入力します。 例えば: /tests Generate unit tests for the selected method. Validate both success and failure, and include edge cases.

  4. 結果の変更を確認して保持または破棄します。

自然言語プロンプトを使用してテストを生成する

スラッシュ コマンドを使用する必要はありません。 十分なコンテキストを含めると、エージェントは自然言語プロンプトからテストを生成します。 例:

  • "このファイル内のメソッドの xUnit テストを生成し、Calculator.Tests プロジェクトに追加します。"
  • "負の値と 0 のエッジ ケースを含む、 CalculateDiscount メソッドの単体テストを記述します。 テストを記述した後に実行します。
  • "このモジュールでデータ アクセス層の統合テストを作成します。"

エージェントはコマンドを実行できるため、同じプロンプトに検証手順を含めることができます。 エージェントにテストの記述後に実行を依頼すると、作業を戻す前に明らかなエラーをキャッチして修正できます。

プロンプトにコンテキストを追加する

生成されるテストの品質は、指定したコンテキストによって異なります。 チャット ビュー プロンプトにコンテキストをアタッチするには、次のオプションのうち 1 つ以上を使用します。

  • コンテキストの追加 ボタン: クイック選択を開いて、ファイル、フォルダー、シンボル、または現在のエディター選択を追加します。
  • ドラッグ アンド ドロップ: エクスプローラー ビューからファイルをドラッグするか、エディター タブをチャット ビューにドラッグしてコンテンツを添付します。
  • # メンション: # 続けてファイル、フォルダー、またはシンボル名を入力して、コンテキストとして追加します。 #selection を使用して現在エディターで選択中の内容を添付するか、#codebase を使用して GitHub Copilot にワークスペース内から関連するコンテキストを検索させます。
  • 外部ファイル: マークダウン ファイル (共同作成者のガイドラインやテスト規則など) をエディターで開き、[ コンテキストの追加] を使用して添付します。 エージェントはコンテンツを使用して、生成されたテストを整形します。

たとえば、エディターに 1 つのメソッドが表示されている場合は、 Write a unit test for the method in #editorを確認できます。 複数のメソッドが表示されている場合、またはターゲット メソッドが表示領域を超えている場合は、最初にコードを選択し、次の質問を行います: #selection write unit tests for the selected code

エージェントの変更を確認して調整する

エージェントがテスト プロジェクトにテストを直接書き込む場合でも、制御は維持されます。

  • 差分を確認します。エージェントが変更した各ファイルがエディターで開き、提案された編集内容が強調表示されます。 受け入れる前に、差分を見てみます。
  • 保持または元に戻す: 変更を受け入れるには [保持 ] を使用し、元に 戻すには [元に戻す ] を使用します。 エディターで個々のハンクを元に戻すこともできます。
  • ビルドと実行: 変更を保持した後、テスト プロジェクトをビルドし、テスト エクスプローラーまたはターミナルからテストを実行して、すべてがコンパイルされて成功することを確認します。
  • 反復処理: 同じチャット セッションでフォローアップ プロンプトを使用して、特定のテストの調整、ケースの追加、メソッドの名前変更を行います。

カスタム命令を使用してテスト生成をカスタマイズする

組織に特定のテスト要件がある場合は、GitHub Copilotでテストを生成する方法をカスタマイズして、出力が標準と一致するようにすることができます。 カスタム命令を使用すると、次の操作を行うことができます。

  • 推奨されるテスト フレームワーク (NUnit ではなく xUnit など) を指定します。
  • テスト クラスとメソッドの名前付け規則を定義します。
  • Arrange-Act-Assert パターンなどのコード構造の基本設定を設定します。
  • 境界値のパラメーター化されたテストなど、特定のテスト パターンを要求します。

ワークスペースの *.instructions.md ファイルにカスタム命令を格納します。 applyTo メタデータ フィールドを使用して、指示をテスト ファイルにのみ適用します。 たとえば、 applyTo: tests/** 値は、命令のスコープを tests/ ディレクトリ内のファイルに設定します。 ソース管理でファイルを共有すると、チームのすべての開発者に同じテスト コンテキストが提供されます。

Important

生成されたテスト ケースでは、すべてのシナリオがカバーされるわけではありません。 テストの品質を確保するには、手動レビューとコード レビューが引き続き必要です。