設計規則は、適切な設計と適切なプラクティスに準拠したテスト スイートの作成と保守に役立ちます。 これらのルールは、テスト構造、ベスト プラクティス、および保守可能なテスト コードにつながる一般的なパターンに焦点を当てています。
このカテゴリのルール
| ルール ID | Title | Severity | 修正完了 |
|---|---|---|---|
| MSTEST0004 | パブリック型はテスト クラスである必要があります。 | Info | イエス |
| MSTEST0006 | ExpectedException 属性は使用しないでください。 | Info | イエス |
| MSTEST0015 | テスト メソッドは無視しないでください。 | なし (オプトイン) | いいえ |
| MSTEST0016 | テスト クラスにはテスト メソッドが必要です。 | Info | いいえ |
| MSTEST0019 | コンストラクターよりも TestInitialize を優先します。 | なし (オプトイン) | イエス |
| MSTEST0020 | TestInitialize よりもコンストラクターを優先します。 | なし (オプトイン) | イエス |
| MSTEST0021 | TestCleanup よりも Dispose を優先します。 | なし (オプトイン) | イエス |
| MSTEST0022 | Dispose よりも TestCleanup を優先します。 | なし (オプトイン) | イエス |
| MSTEST0025 | 常にfalseになる条件よりもAssert.Failを優先してください。 | Info | イエス |
| MSTEST0029 | パブリック メソッドはテスト メソッドである必要があります。 | Info | イエス |
| MSTEST0036 | シャドウは使用しないでください。 | Warnung | いいえ |
| MSTEST0044 | DataTestMethod よりも TestMethod を優先します。 | Info | イエス |
| MSTEST0045 | タイムアウトには協調キャンセルを使用します。 | Info | イエス |
一般的なシナリオ
テスト クラスの構造
テスト クラスを作成する場合、次の規則は適切な設計を保証するのに役立ちます。
- MSTEST0004: ヘルパー クラスを内部に保持し、テスト クラスのみをパブリックにする必要があります。
- MSTEST0016: テスト クラスに少なくとも 1 つのテスト メソッドが含まれていることを確認します。
- MSTEST0029: テスト クラスのパブリック メソッドはテスト メソッドにする必要があります。
初期化パターン
MSTest では、コンストラクターと TestInitialize メソッドの両方がサポートされています。 これらの相互排他的ルールを使用すると、一貫性のあるパターンを適用できます。
- MSTEST0019: 初期化に TestInitialize を適用します (非同期シナリオに役立ちます)。
- MSTEST0020: 初期化にコンストラクターを適用します (読み取りonly フィールドの方が適しています)。
クリーンアップ パターン
同様に、Dispose と TestCleanup のいずれかを選択します。
- MSTEST0021: クリーンアップに Dispose パターンを適用します。
- MSTEST0022: クリーンアップのために TestCleanup を強制します。
アサーションの向上
- MSTEST0006: 精度を向上させるには、[ExpectedException] の代わりに Assert.ThrowsExactly を使用します。
- MSTEST0025: Assert.IsTrue(false) の代わりに Assert.Fail を使用します。
テスト品質
- MSTEST0015: 無視されたテストにフラグを設定します (オプトイン 規則)。
- MSTEST0036: 基底クラスのメンバーをシャドウしないようにします。
- MSTEST0044: データドリブン テストが必要な場合を除き、TestMethod を使用します。
- MSTEST0045: タイムアウト処理のためにキャンセル トークンを有効にします。
関連ドキュメント
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET