使用規則は、MSTest 属性、メソッド、およびパターンの適切な使用をサポートします。 これらの規則は、一般的な間違いをキャッチし、テストがフレームワークの要件と規則に従っていることを確認します。
このカテゴリのルール
| ルール ID | Title | Severity | 修正完了 |
|---|---|---|---|
| MSTEST0002 | テスト クラスは有効である必要があります。 | Warnung | イエス |
| MSTEST0003 | テスト メソッドは有効である必要があります。 | 警告→エラー* | イエス |
| MSTEST0005 | TestContext は有効である必要があります。 | Warnung | イエス |
| MSTEST0007 | テスト メソッドで属性を使用します。 | Warnung | いいえ |
| MSTEST0008 | TestInitialize は有効である必要があります。 | Warnung | イエス |
| MSTEST0009 | TestCleanup が有効である必要があります。 | Warnung | イエス |
| MSTEST0010 | ClassInitialize は有効である必要があります。 | Warnung | イエス |
| MSTEST0011 | ClassCleanup は有効である必要があります。 | Warnung | イエス |
| MSTEST0012 | AssemblyInitialize は有効である必要があります。 | Warnung | イエス |
| MSTEST0013 | AssemblyCleanup が有効である必要があります。 | Warnung | イエス |
| MSTEST0014 | DataRow は有効である必要があります。 | Warnung | イエス |
| MSTEST0017 | アサーション引数は正しい順序で渡す必要があります。 | Info | イエス |
| MSTEST0018 | DynamicData は有効である必要があります。 | Warnung | イエス |
| MSTEST0023 | ブール型アサーションを否定しないでください。 | Info | イエス |
| MSTEST0024 | 静的な TestContext は格納しないでください。 | Warnung | いいえ |
| MSTEST0026 | アサーション引数は、条件付きアクセスを回避する必要があります。 | Info | いいえ |
| MSTEST0030 | テスト メソッドを含む型は、テスト クラスである必要があります。 | Warnung | イエス |
| MSTEST0031 | System.ComponentModel.DescriptionAttribute を使用しないでください。 | Info | イエス |
| MSTEST0032 | 常に真であるアサート条件をレビューします。 | Info | いいえ |
| MSTEST0034 | ClassCleanupBehavior.EndOfClass を使用します。 | Info | イエス |
| MSTEST0035 | テスト メソッドまたはテスト クラスで DeploymentItem を使用します。 | Info | いいえ |
| MSTEST0037 | 適切なアサート メソッドを使用します。 | Info | イエス |
| MSTEST0038 | 値型では Assert.AreSame を使用しないでください。 | Info | イエス |
| MSTEST0039 | 新しい Assert.Throws メソッドを使用します。 | Info | イエス |
| MSTEST0040 | 非同期 void コンテキストではアサートを使用しないでください。 | Warnung | いいえ |
| MSTEST0041 | テスト クラスで条件ベースの属性を使用します。 | Warnung | いいえ |
| MSTEST0042 | 重複した「DataRow」。 | Warnung | いいえ |
| MSTEST0043 | テスト メソッドで retry 属性を使用します。 | 警告→エラー* | イエス |
| MSTEST0046 | StringAssert の代わりに Assert を使用します。 | Info | イエス |
| MSTEST0048 | TestContext プロパティの使用方法。 | Warnung | いいえ |
| MSTEST0049 | テストコンテキストのキャンセル用トークンを流します。 | Info | イエス |
| MSTEST0050 | グローバルテストフィクスチャは有効である必要があります。 | Warnung | イエス |
| MSTEST0051 | Assert.Throws には単一のステートメントを含める必要があります。 | Info | イエス |
| MSTEST0052 | 明示的な DynamicDataSourceType は避けてください。 | Info | イエス |
| MSTEST0053 | Assert 形式のパラメーターは使用しないでください。 | Info | イエス |
| MSTEST0054 | CancellationToken プロパティを使用します。 | Info | イエス |
| MSTEST0055 | 文字列メソッドの戻り値を無視しないでください。 | Warnung | いいえ |
| MSTEST0056 | TestMethodAttribute は DisplayName を正しく設定する必要があります。 | Info | イエス |
| MSTEST0057 | TestMethodAttribute はソース情報を伝達する必要があります。 | Warnung | いいえ |
| MSTEST0058 | catch ブロック内のアサートは避けてください。 | Info | いいえ |
| MSTEST0059 | パラレライズ属性を正しく使用する。 | Warnung | いいえ |
| MSTEST0060 | TestMethodAttribute を複製します。 | Warnung | イエス |
| MSTEST0061 | ランタイム チェックの代わりに OSCondition 属性を使用します。 | Info | イエス |
| MSTEST0062 | out/ref テスト メソッドのパラメーターは使用しないでください。 | Warnung | イエス |
| MSTEST0063 | テスト クラスには有効なコンストラクターが必要です。 | Warnung | いいえ |
* Recommended モードと All モードでエラーにエスカレート。
一般的なシナリオ
テスト構造の検証
テスト クラス、メソッド、フィクスチャが MSTest の要件に従っていることを確認します。
- MSTEST0002: クラス レイアウトの要件をテストします (例: public、non-static)。
- MSTEST0003: テスト メソッドのレイアウト要件 (⚠️ がエラーにエスカレートされました)。
- MSTEST0030: [TestMethod] を持つメソッドは、[TestClass] に含める必要があります。
- MSTEST0063: クラス コンストラクターの検証をテストします。
ライフサイクル メソッド
初期化メソッドとクリーンアップ メソッドを検証します。
- MSTEST0008: TestInitialize 検証。
- MSTEST0009: TestCleanup 検証。
- MSTEST0010: ClassInitialize 検証。
- MSTEST0011: ClassCleanup 検証。
- MSTEST0012: AssemblyInitialize 検証。
- MSTEST0013: AssemblyCleanup 検証。
- MSTEST0034: ClassCleanupBehavior.EndOfClass を設定します。
- MSTEST0050: グローバル テスト フィクスチャの検証。
データドリブン テスト
データ属性が正しく使用されていることを確認します。
- MSTEST0007: データ属性はテスト メソッド上にある必要があります。
- MSTEST0014: DataRow 検証。
- MSTEST0018: DynamicData 検証。
- MSTEST0042: 重複する DataRow を検出します。
- MSTEST0052: DynamicDataSourceType に自動検出を使用します。
- MSTEST0062: out/ref パラメーターは使用しないでください。
より優れたアサーションを書く
正しく効果的なアサーションの使用に関する規則:
- MSTEST0017: 正しい順序で期待/実績を渡します。
- MSTEST0023: 条件を否定しないでください (Assert.IsFalse を直接使用します)。
- MSTEST0026: アサーションで null 条件演算子を使用しないようにします。
- MSTEST0032: 常に真の条件を確認します。
- MSTEST0037: 最も適切なアサート メソッドを使用します。
- MSTEST0038: 値型で AreSame を使用しないでください。
- MSTEST0039: Assert.ThrowsExactly (新しい API) を使用します。
- MSTEST0046: StringAssert よりも Assert を優先します。
- MSTEST0051: Assert.Throws は 1 つのステートメントをテストする必要があります。
- MSTEST0053: 書式パラメーターの代わりに文字列補間を使用します。
- MSTEST0058: アサーションを catch ブロックに配置しないでください。
TestContext の使用方法
TestContext オブジェクトの適切な使用方法:
- MSTEST0005: TestContext プロパティの検証。
- MSTEST0024: TestContext は静的フィールドに格納しないでください。
- MSTEST0048: テストフィクスチャでの制限付きプロパティアクセス。
- MSTEST0049: TestContext からのフロー キャンセル トークン。
- MSTEST0054: TestContext.CancellationToken プロパティを使用します。
非同期パターン
非同期テスト コードの規則:
- MSTEST0040: 非同期 void メソッドではアサートを回避します。
テスト構成
- MSTEST0031: 適切な属性 (System.ComponentModel.Description ではなく) を使用します。
- MSTEST0035: DeploymentItem の使用方法。
- MSTEST0041: 条件属性はテスト クラスに存在する必要があります。
- MSTEST0043: 再試行属性はテスト メソッド上にある必要があります (⚠️ はエラーにエスカレートされます)。
- MSTEST0055: 文字列メソッドの戻り値を無視しないでください。
- MSTEST0056: TestMethodAttribute で DisplayName を正しく設定します。
- MSTEST0057: カスタム TestMethodAttribute にソース情報を伝達します。
- MSTEST0059: Parallelize と DoNotParallelize の両方を使用しないでください。
- MSTEST0060: TestMethodAttribute が重複しないようにします。
- MSTEST0061: プラットフォーム チェックに OSCondition 属性を使用します。
関連ドキュメント
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET