次の方法で共有


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

この記事では、Visual Studio コマンドと GitHub Copilot を使用して、xUnit フレームワークを使用して C# で単体テストとテスト プロジェクトを生成する方法について説明します。 Visual Studio を GitHub Copilot と組み合わせて使用すると、単体テストの生成と記述のプロセスが大幅に簡略化されます。

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

ProductServiceGetProductByIdインターフェイスに依存するIProductDataStorage メソッドを持つICacheClient クラスがあるとします。

public class ProductService(
    IProductDataStorage productDataStorage,
    ICacheClient cacheClient)
{
    public async Task<Product?> GetProductById(int productId)
    {
        var product = await cacheClient.GetProduct(productId);

        if (product is not null)
        {
            return product;
        }

        product = await productDataStorage.GetProduct(productId);

        if (product is not null)
        {
            await _cacheClient.SetProduct(product);
        }

        return product;
    }
}

テスト プロジェクトとスタブ メソッドを生成するには、次の手順に従います。

  • メソッドを選択します。
  • 右クリックし、[ 単体テストの作成] を選択します。

単体テスト作成コマンド

[単体テストの作成] ダイアログで、[Test Framework] ドロップダウン メニューから [xUnit] を選択します。

単体テストの作成コマンドは、既定で MSTest フレームワークに設定されます。 ただし、この例では xUnit を使用するため、Visual Studio 拡張機能 xUnit.net.TestGenerator2022 をインストールする必要があります。

[単体テストの作成] ウィンドウ

  • まだテスト プロジェクトがない場合は、[ 新しいテスト プロジェクト ] を選択するか、既存のプロジェクトを選択します。
  • 必要に応じて、名前空間、クラス、およびメソッド名のテンプレートを指定し、[ OK] をクリックします。

数秒後、Visual Studio は必要なパッケージをプルし、必要なパッケージと構造、テスト対象のプロジェクトへの参照、 ProductServiceTests クラスとスタブ メソッドを含む生成された xUnit プロジェクトを取得します。

生成されたスタブ メソッド

テスト自体を生成する

  • もう一度テストするメソッドを選択します。

  • 右クリックして[ Copilot に質問]を選択します。

  • 次のような単純なプロンプトを入力します。

    xunit、nsubstituteを使用して単体テストを生成し、結果を#ProductServiceTestsファイルに挿入します。

    #文字を入力するときは、テスト クラスを選択する必要があります。

ヒント

すばやく検索するには、 ProductServiceTests を別のタブで開くことをお勧めします。

テストの生成を求めるプロンプト

プロンプトを実行し、[ 承諾] をクリックすると、Copilot によってテスト コードが生成されます。 その後も、必要なパッケージをインストールします。

パッケージがインストールされると、テストを実行できます。 この例は最初の試行で機能しました。Copilot は N一時置換の操作方法を認識しており、すべての依存関係はインターフェイスを介して定義されています。

生成されたテスト