csharp-nunit について
.NET 開発者向けに、通常のテストとデータ駆動テストを扱う NUnit の単体テスト作成スキルです。テスト構造、アサーション、分離、整理の規約を示します。
主な機能
- 01AAA テスト構造
- 02テスト命名と Fixture の規約
- 03データ駆動テスト属性
- 04アサーションの指針
- 05Setup と Teardown のパターン
- 06モックとテストの分離
活用シーン
- 01独立した NUnit テストプロジェクトの作成
- 02.NET コードの単体テスト作成
- 03パラメーター化テストケースの追加
- 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")]を使用してください
コメント
Markdown 対応