この記事では、Visual Studio コマンドと GitHub Copilot を使用して、xUnit フレームワークを使用して C# で単体テストとテスト プロジェクトを生成する方法について説明します。 Visual Studio を GitHub Copilot と組み合わせて使用すると、単体テストの生成と記述のプロセスが大幅に簡略化されます。
テスト プロジェクトを作成する
ProductService
とGetProductById
インターフェイスに依存する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一時置換の操作方法を認識しており、すべての依存関係はインターフェイスを介して定義されています。
.NET