| 財産 | 価値 |
|---|---|
| ルール識別子 | MSTEST0082 |
| タイトル | テスト クラスは、別の MSTest バージョンからライフサイクルまたはテスト メソッドを継承します |
| カテゴリ | Usage |
| 修正が破壊的か非破壊的か | Non-breaking |
| 既定で有効 | Yes |
| 既定の重大度 | Warning |
| バージョン で導入された | 4.4.0 (プレビュー) |
| コード修正はありますか | No |
Important
このアナライザーは MSTest 4.4 用に計画されており、MSTest 4.4.0 がリリースされるまでプレビュー ビルドでのみ使用できます。
原因
検出可能なテスト クラスは、MSTest の別のメジャー バージョンを参照するアセンブリからパブリック テスト メソッドまたはライフサイクル メソッドを継承します。
ルールの説明
MSTest は、正確なランタイム型 ID によってテスト属性とライフサイクル属性を照合します。 MSTest v3 は Microsoft.VisualStudio.TestPlatform.TestFrameworkでこれらの属性を定義し、MSTest v4 では MSTest.TestFrameworkで定義します。 基本ライブラリと派生テスト プロジェクトで異なるメジャー バージョンが使用されている場合、アダプターは他のフレームワーク アセンブリから継承された属性を自動的に無視します。 その結果、継承されたテストは検出されず、継承された初期化メソッドまたはクリーンアップ メソッドは実行されません。
たとえば、MSTest v3 でビルドされた共有テスト ライブラリでは、次の宣言が行われる場合があります。
public abstract class SharedTests
{
[TestMethod] public void InheritedTest() { }
}
基底クラスから派生した MSTest v4 プロジェクトは、診断をトリガーします。
[TestClass]
public sealed class ProductTests : SharedTests { } // Violation
アナライザーは、継承されたテスト メソッド、テスト初期化メソッドとクリーンアップ メソッド、派生クラスに対して実行するように構成されたクラス初期化メソッドとクリーンアップ メソッドをチェックします。
違反を修正する方法
ベース ライブラリと派生テスト プロジェクトから同じ MSTest メジャー バージョンを参照します。 基底クラスを宣言するアセンブリを再コンパイルし、MSTest 属性から派生したカスタム属性の場合は、カスタム属性を宣言するアセンブリを再コンパイルします。
どのようなときに警告を抑制するか
このルールからの警告は抑制しないでください。 違反は、MSTest が継承されたテストまたはライフサイクル メソッドをサイレント にスキップすることを意味します。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable MSTEST0082
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0082
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、noneでその重要度をに設定します。
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0082.severity = none
詳細については、「 コード分析の警告を抑制する方法」を参照してください。
こちらも参照ください
.NET