単体テスト ツールと環境を確認する

完了

GitHub Copilot Chat は、指定したコードに基づいて単体テストを提案するために使用できます。 たとえば、メソッドのシグネチャと本文を指定すると、GitHub Copilot Chat は、入力パラメーターと期待される出力値をカバーするテスト ケースを提案できます。 テスト プロジェクトにいくつかのテスト ケースが含まれている場合は、GitHub Copilot を使用して、追加のテスト ケース用のコード補完候補を生成できます。 コード行補完を使用して単体テストを生成することは、反復的なプロセスを減らし、コードが徹底的にテストされていることを保証するのに役立ちます。

GitHub Copilot Chat は、コードのコンテキストとセマンティクスを使用して、関数が正しく動作していることを確認するアサーションを提案します。 手作業での特定が困難であるかもしれないエッジ ケースや境界条件用のテスト ケースの記述も手助けします。 たとえば、GitHub Copilot Chat は、エラー処理、null 値、予期しない入力の型用のテスト ケースを提案できます。

重要

生成されたテスト ケースは、考えられるすべてのシナリオをカバーしているとは限りません。 コードの品質を確保するには、手動テストとコード レビューが必要です。

GitHub Copilot での単体テストのサポート

Copilot は、次のテスト タスクに役立ちます。

  • テスト フレームワークを設定する: プロジェクトと言語に適したテスト フレームワークと VS Code 拡張機能の構成に関するヘルプが表示されます。
  • テスト コードを生成する: 単体テスト、統合テスト、アプリケーション コードをカバーするエンドツーエンドのテストを作成します。
  • エッジ ケースの処理: エッジ ケースとエラー状態をカバーする包括的なテスト スイートを生成します。
  • 失敗したテストを修正する: テストの失敗を修正するための提案を受け取ります。
  • 一貫性を維持する: Copilot をカスタマイズして、プロジェクトのコーディングプラクティスに従うテストを生成します。

テスト フレームワークを設定する

テスト ワークフローを高速化するために、Copilot はプロジェクトのテスト フレームワークと VS Code 拡張機能を設定するのに役立ちます。 Copilot は、プロジェクトの種類に基づいて適切なテスト フレームワークを提案します。

  1. チャット ビューを開きます。

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

  3. GitHub Copilot のガイダンスに従ってプロジェクトを構成します。

GitHub Copilot を使用して単体テストを記述する

GitHub Copilot は、コードベースをカバーするテスト コードを生成することで、アプリケーション コードのテストを記述するのに役立ちます。 これには、単体テスト、エンド ツー エンド テスト、エッジ ケースのテストが含まれます。

次の GitHub Copilot ツールを使用して単体テストを生成できます。

  • チャット ビュー: [チャット] ビューを使用すると、Ask、Edit、または Agent モードを使用して、プロジェクト、クラス、またはメソッドの単体テストを生成できます。
  • インライン チャット: インライン チャットを使用して、選択したクラスまたはメソッドの単体テストを生成します。
  • スマート アクション: [テストの生成] スマート アクションを使用して、プロンプトを記述せずに選択したコードの単体テストを生成します。
  • コード行の入力候補: コード行の入力候補を使用して、既存のテスト ケースの単体テストの追加を提案します。

失敗したテストを修正する

Copilot は Visual Studio Code のテスト エクスプローラーと統合され、失敗したテストの修正に役立ちます。

  1. テスト エクスプローラーで、失敗したテストにカーソルを合わせます。

  2. [ テスト エラーの修正 ] ボタン (スパークル アイコン) を選択する

  3. Copilot の推奨される修正プログラムを確認して適用します。

または、次を実行できます。

  1. チャット ビューを開きます。

  2. /fixTestFailureスラッシュ コマンドを入力します。

  3. Copilot の提案に従ってテストを修正する

ヒント

エージェント モードでは、テストの実行時にテスト出力が監視され、失敗したテストの修正と再実行が自動的に試行されます。

一貫性を維持する

組織に特定のテスト要件がある場合は、Copilot がテストを生成する方法をカスタマイズして、標準を満たしていることを確認できます。 カスタム命令を提供することで、Copilot がテストを生成する方法をカスタマイズできます。 例えば次が挙げられます。

  • 推奨されるテスト フレームワークを指定する
  • テストの名前付け規則を定義する
  • コード構造の基本設定を設定する
  • 特定のテスト パターンまたは手法を要求する

Visual Studio Code による単体テストのサポート

Visual Studio Code で C# 単体テストを作成および実行するには、次のリソースが必要です。

  • .NET 8.0 SDK 以降。
  • Visual Studio Code 用の C# 開発キット拡張機能。
  • プロジェクトに追加されたテスト フレームワーク パッケージ。

C# 開発キットによる単体テストのサポート

Visual Studio Code 用の C# 開発キット拡張機能には、C# プロジェクトの単体テストの作成と管理に役立つ豊富な機能セットが用意されています。 このパックには、次の機能があります。

  • テスト エクスプローラー - ワークスペース内のすべてのテスト ケースを表示するツリー ビュー。
  • テスト ケースの実行/デバッグ - テスト ケースを実行およびデバッグする機能。
  • テスト結果の表示 - テスト結果を表示する機能。
  • テスト コマンド - すべてのテストの実行、失敗したテストの実行などを行うためのコマンド。
  • テスト設定 - テストに固有の設定。
  • テスト フレームワーク パッケージ

C# 開発キットは、以下のテスト フレームワークをサポートしています。

  • xUnit
  • NUnit
  • MSTest

C# 開発キットを使用すると、テスト プロジェクトの作成、テスト フレームワーク パッケージの追加、単体テストの管理を行うことができます。

テスト フレームワークの有効化

Visual Studio Code のコマンド パレットは、プロジェクトのテスト フレームワークを有効にする最も簡単な方法を提供します。 コマンド パレットは、以下の方法で開くことができます。

  • Ctrl + Shift + P キー (Windows/Linux) または Cmd + Shift + P キー (macOS) を押します。
  • [表示] メニューを開いた後、[コマンド パレット] を選択します。
  • ソリューション エクスプローラー ビューを開き、ソリューション フォルダーを右クリックした後、[新しいプロジェクト] を選択します。 この選択肢では、[.NET: 新しいプロジェクト...] コマンドが既に選択された状態でコマンド パレットが開きます。

以下のセクションでは、コマンド パレットを使用して C# プロジェクトのテスト フレームワークを有効にする方法について説明します。

xUnit

[コマンド パレット] を開き、[.NET: 新しいプロジェクト...][xUnit テスト プロジェクト] を選択し、新しいプロジェクトの名前と場所を指定します。 このコマンドは、xUnit をテスト ライブラリとして使用する新しいプロジェクトとディレクトリを作成し、プロジェクト ファイルに次の <PackageReference /> 要素を追加してテスト ランナーを構成します。

  • Microsoft.NET.Test.Sdk
  • xUnit
  • xunit.runner.visualstudio
  • coverlet.collector

ターミナルから、次のコマンドを実行できます。

```dotnetcli
dotnet add [location of your test csproj file] reference [location of the csproj file for project to be tested]
```

NUnit

[コマンド パレット] を開き、[.NET: 新しいプロジェクト...][NUnit3 テスト プロジェクト] を選択し、新しいプロジェクトの名前と場所を指定します。 このコマンドは、NUnit をテスト ライブラリとして使用する新しいプロジェクトとディレクトリを作成し、プロジェクト ファイルに次の <PackageReference /> 要素を追加してテスト ランナーを構成します。

  • Microsoft.NET.Test.Sdk
  • NUnit
  • NUnit3TestAdapter

ターミナルから、次のコマンドを実行します。

```dotnetcli
dotnet add [location of your test csproj file] reference [location of the csproj file for project to be tested]
```

MSTest

[コマンド パレット] を開き、[.NET: 新しいプロジェクト...][MSTest テスト プロジェクト] を選択し、新しいプロジェクトの名前と場所を指定します。 このコマンドは、MSTest をテスト ライブラリとして使用する新しいプロジェクトとディレクトリを作成し、プロジェクト ファイルに次の <PackageReference /> 要素を追加してテスト ランナーを構成します。

  • Microsoft.NET.Test.Sdk
  • MSTest.TestAdapter
  • MSTest.TestFramework
  • coverlet.collector

ターミナルから、次のコマンドを実行します。

```dotnetcli
dotnet add [location of your test csproj file] reference [location of the csproj file for project to be tested]
```

GitHub Copilot Chat を使用した Visual Studio Code での単体テスト開発

Visual Studio Code と GitHub Copilot Chat を組み合わせることで、C# プロジェクトの単体テストを作成および実行するための強力な環境が提供されます。

単体テストのプロセスは、次の 3 つの段階に分けることができます。

  • Visual Studio Code を使用して、単体テスト用のテスト プロジェクトを作成します。
  • GitHub Copilot Chat を使用して、C# プロジェクト用の単体テスト ケースを開発します。
  • Visual Studio Code と C# 開発キットを使用して、単体テストを実行および管理します。

テスト プロジェクトを作成する

単体テストを保持するために使用されることになるテスト プロジェクトを作成する必要があります。 Visual Studio Code を使用して以下のタスクを実行することができます。

  1. コマンド パレットを使用して、指定されたテスト フレームワークを使用するテスト プロジェクトを作成します。

  2. 統合ターミナルを使用して、テストするプロジェクトへの参照を追加します。

このプロセスでは、新しいプロジェクトを作成し、選択したフレームワーク用にテスト ランナーを構成します。

GitHub Copilot Chat を使用した単体テスト ケースを生成する

GitHub Copilot Chat は、テスト フレームワークの単体テスト ケースを記述するのに役立ちます。 Copilot Chat はテスト フレームワークとコーディング スタイルを識別し、それに合うコード スニペットを生成します。 Copilot Chat を使用して次のタスクを実行できます。

  • エディターで開いているコード、またはエディターで強調表示されたコード スニペットに基づいて、テスト フレームワークの単体テスト ケースを記述します。 Copilot はテスト フレームワークとコーディング スタイルを識別し、一致するコード スニペットを生成します。

  • 手作業では特定が困難なエッジ ケースや境界条件のテスト ケースを識別および記述します。 たとえば、Copilot では、エラー処理、null 値、予期しない入力の種類に関するテスト ケースを提案できます。

  • また、コードのコンテキストとセマンティクスに基づいて、関数が正しく動作していることを確認するアサーションを提案することもできます。 たとえば、関数入力パラメーターが有効であることを保証するためにアサーションを生成します。

Copilot Chat に単体テスト ケースの生成を依頼する場合は、次のシナリオを考慮してください。

  • 単一メソッドがエディターで完全に表示されている場合、Write a unit test for the method in the #editor と入力することで Copilot Chat にそのメソッドの単体テストを生成するよう依頼できます。

  • 複数のメソッドが表示されている場合や、目的のメソッドがエディターで表示範囲を超えて拡張されている場合は、単体テストを生成するコードを選択し、Copilot に依頼します: #selection write a unit test for this code

Visual Studio Code で単体テストを実行および管理する

Visual Studio Code と C# 開発キットには、C# プロジェクトの単体テストの実行と管理に役立つ豊富な機能が用意されています。 [エクスプローラーのテスト] を使用して、テスト ケースの実行/デバッグ、テスト結果の表示、テスト ケースの管理を行うことができます。

  • テスト ケースの実行/デバッグ:C# 開発キットは、クラスとメソッドの定義の左側にショートカット (緑色の再生ボタン) を生成します。 対象のテスト ケースを実行するには、緑色の再生ボタンを選択します。 また、右クリックすると、詳細なオプションが表示されます。

  • テスト エクスプローラー:[エクスプローラーのテスト] は、ワークスペース内のすべてのテスト ケースを表示するツリー ビューです。 Visual Studio Code の左側のアクティビティ バーにあるビーカー ボタンを選択すると開くことができます。 また、そこからテスト ケースを実行/デバッグし、テスト結果を表示することもできます。

  • テスト結果を表示する:テスト ケースを実行/デバッグした後、関連するテスト項目の状態は、エディター装飾とエクスプローラーのテストの両方で更新されます。 スタック トレース内のリンクを選択して、ソースの場所に移動できます。

  • Visual Studio Code のテスト コマンド:コマンド パレットで [テスト:] を検索すると見つかるテスト コマンド ([すべてのテストを実行する] など) があります。

  • Visual Studio Code のテスト設定:テストに特化した Visual Studio Code 設定があり、設定エディターで [テスト] を検索すると見つかります。

まとめ

GitHub Copilot Chat は、指定したコードに基づいて単体テストを提案するために使用できます。 たとえば、メソッドのシグネチャと本文を指定すると、GitHub Copilot Chat は、入力パラメーターと期待される出力値をカバーするテスト ケースを提案できます。 テスト プロジェクトにいくつかのテスト ケースが含まれている場合は、GitHub Copilot を使用して、追加のテスト ケース用のコード補完候補を生成できます。 コード行補完を使用して単体テストを生成することは、反復的なプロセスを減らし、コードが徹底的にテストされていることを保証するのに役立ちます。

GitHub Copilot Chat は、コードのコンテキストとセマンティクスを使用して、関数が正しく動作していることを確認するアサーションを提案します。 手作業での特定が困難であるかもしれないエッジ ケースや境界条件用のテスト ケースの記述も手助けします。 たとえば、GitHub Copilot Chat は、エラー処理、null 値、予期しない入力の型用のテスト ケースを提案できます。