mcpField
C
csharp-nunit

csharp-nunit

github.com/githubテスト・品質40.5k9.0k 回インストール1 日前に更新
リポジトリ

csharp-nunit について

.NET 開発者向けに、通常のテストとデータ駆動テストを扱う NUnit の単体テスト作成スキルです。テスト構造、アサーション、分離、整理の規約を示します。

主な機能

  1. 01AAA テスト構造
  2. 02テスト命名と Fixture の規約
  3. 03データ駆動テスト属性
  4. 04アサーションの指針
  5. 05Setup と Teardown のパターン
  6. 06モックとテストの分離

活用シーン

  1. 01独立した NUnit テストプロジェクトの作成
  2. 02.NET コードの単体テスト作成
  3. 03パラメーター化テストケースの追加
  4. 04テスト間の Setup と Teardown の整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/awesome-copilot --skill csharp-nunit

インストール後、Claude Code で/csharp-nunitを入力して読み込まれたか確認します。

詳細

NUnit ベストプラクティス

あなたの目標は、標準的なテスト手法とデータ駆動型テスト手法の両方をカバーし、NUnit を使用して効果的な単体テストを作成できるよう支援することです。

プロジェクトのセットアップ

  • 命名規則 [ProjectName].Tests に従った、独立したテストプロジェクトを使用してください
  • Microsoft.NET.Test.Sdk、NUnit、および NUnit3TestAdapter パッケージを参照してください
  • テスト対象のクラスに対応するテストクラスを作成してください(例: Calculator に対して CalculatorTests)
  • .NET SDK のテストコマンドを使用してください: テストの実行には dotnet test

テストの構造

  • テストクラスに [TestFixture] 属性を適用してください
  • テストメソッドには [Test] 属性を使用してください
  • Arrange-Act-Assert(AAA)パターンに従ってください
  • テストの名前には MethodName_Scenario_ExpectedBehavior というパターンを使用してください
  • テストごとのセットアップとティアダウンには [SetUp] と [TearDown] を使用してください
  • クラスごとのセットアップとティアダウンには [OneTimeSetUp] と [OneTimeTearDown] を使用してください
  • アセンブリレベルのセットアップとティアダウンには [SetUpFixture] を使用してください

標準的なテスト

  • テストは単一の振る舞いに焦点を絞ってください
  • 1 つのテストメソッドで複数の振る舞いをテストすることは避けてください
  • 意図を表現する明確なアサーションを使用してください
  • テストケースの検証に必要なアサーションのみを含めてください
  • テストを独立させ、冪等にしてください(どの順序でも実行可能)
  • テスト間の相互依存を避けてください

データ駆動型テスト

  • インラインのテストデータには [TestCase] を使用してください
  • プログラムで生成するテストデータには [TestCaseSource] を使用してください
  • 単純なパラメーターの組み合わせには [Values] を使用してください
  • プロパティまたはメソッドベースのデータソースには [ValueSource] を使用してください
  • ランダムな数値のテスト値には [Random] を使用してください
  • 連続する数値のテスト値には [Range] を使用してください
  • 複数のパラメーターを組み合わせるには [Combinatorial] または [Pairwise] を使用してください

アサーション

  • 制約モデルとともに Assert.That を使用してください(NUnit で推奨されるスタイル)
  • Is.EqualTo、Is.SameAs、Contains.Item などの制約を使用してください
  • 単純な値の等価性には Assert.AreEqual を使用してください(クラシックスタイル)
  • コレクションの比較には CollectionAssert を使用してください
  • 文字列固有のアサーションには StringAssert を使用してください
  • 例外をテストするには Assert.Throws<T> または Assert.ThrowsAsync<T> を使用してください
  • 失敗時の明確さのために、アサーションには説明的なメッセージを含めてください

モックと分離

  • NUnit と併用して Moq や NSubstitute の使用を検討してください
  • テスト対象のユニットを分離するために依存関係をモックしてください
  • モックを容易にするためにインターフェイスを使用してください
  • 複雑なテストのセットアップには DI コンテナーの使用を検討してください

テストの整理

  • 機能またはコンポーネントごとにテストをグループ化してください
  • [Category("CategoryName")] でカテゴリを使用してください
  • 必要な場合には [Order] でテストの実行順序を制御してください
  • 所有権を示すには [Author("DeveloperName")] を使用してください
  • テストに関する追加情報を提供するには [Description] を使用してください
  • 自動的に実行すべきでないテストには [Explicit] の使用を検討してください
  • テストを一時的にスキップするには [Ignore("Reason")] を使用してください

コメント