| 財産 | 価値 |
|---|---|
| ルール識別子 | MSTEST0069 |
| Title | 継承された [TestClass] は MSTest ソース ジェネレーターによって無視されます |
| Category | Usage |
| 修正が破壊的か非破壊的か | Non-breaking |
| 既定で有効 | はい |
| 既定の重大度 | Warning |
| バージョン で導入された | 4.3.0 |
| コード修正はありますか | いいえ |
Note
このアナライザーは、 MSTest.SourceGeneration パッケージに付属しており、試験的な機能である MSTest リフレクション ソース ジェネレーターにオプトインしたプロジェクトにのみ読み込まれます。 既定のリフレクション ベースの検出が使用されている場合は適用されません。
原因
クラスは、[TestClass]を直接宣言するのではなく、基底クラスから継承する[TestClass]属性を介して MSTest テスト クラスとして意図されています。
ルールの説明
MSTest ソース ジェネレーターは、継承に従わない ForAttributeWithMetadataNameを使用してテスト クラスを列挙します。 基本型からの [TestClass] の継承に依存するクラスは、ソースによって生成された検出から暗黙的にスキップされ、ソース生成プロバイダーがアクティブなリフレクション バックエンドである場合は実行できません。
[TestClass]
public class BaseTests
{
}
// Violation: relies on the inherited [TestClass] attribute.
public class DerivedTests : BaseTests
{
[TestMethod]
public void Test()
{
}
}
違反を修正する方法
[TestClass]を派生クラスに直接適用して、ソースによって生成された検出がアクティブになったときに検出されるようにします。
[TestClass]
public class BaseTests
{
}
[TestClass]
public class DerivedTests : BaseTests
{
[TestMethod]
public void Test()
{
}
}
どのようなときに警告を抑制するか
ソースの生成が有効になっている場合、影響を受けるテスト クラスが検出または実行されないため、この規則からの警告を抑制しないでください。 クラスが実際にテスト クラスを意図していない場合は、それを抑制できます。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable MSTEST0069
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0069
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、noneでその重要度をに設定します。
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0069.severity = none
詳細については、「 コード分析の警告を抑制する方法」を参照してください。
.NET