MSTEST0073: '[ResourceLock]' リソース キーに定数を使用する

財産
ルール識別子 MSTEST0073
タイトル '[ResourceLock]' リソース キーに定数を使用する
Category Usage
修正が破壊的か非破壊的か Non-breaking
既定で有効 Yes
既定の重大度 情報
バージョン で導入された 4.4.0 (プレビュー)
コード修正はありますか No

Important

ResourceLockAttribute は MSTest 4.4 用に計画されており、MSTest 4.4.0 がリリースされるまでプレビュー ビルドでのみ使用できます。

原因

[ResourceLock]属性は、共有定数を参照するのではなく、そのリソース キーをベア文字列リテラルとして渡します。

ルールの説明

[ResourceLock] は、リソース キーの大文字と小文字が区別される正確な文字列の等価性によってテストに一致します。 ベア文字列リテラルが開かないと、入力ミスによって別のキーが生成されるため、競合するテストはシリアル化されなくなり、ビルド エラーで失敗する代わりに警告なしに競合します。 WellKnownResources メンバーや独自のconstなどの共有定数を参照すると、入力ミスがコンパイル エラーになり、コンパイラは同じリソースで競合するすべてのテストで同じキーを使用するように強制できます。

[ResourceLock("database")] // Violation: bare string literal.
[TestMethod]
public void ReadsSharedSchema() { }

違反を修正する方法

プロセス グローバル状態の WellKnownResources メンバーを参照するか、独自の const stringを宣言して参照します。

private const string Database = "database";

[ResourceLock(Database)]
[TestMethod]
public void ReadsSharedSchema() { }

どのようなときに警告を抑制するか

リテラル リソース キーを意図的に使用し、アセンブリ内の他のテストが同じリソースで調整する必要がないと確信している場合は、この警告を抑制しても安全です。

警告を抑制する

単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。

#pragma warning disable MSTEST0073
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0073

ファイル、フォルダー、またはプロジェクトのルールを無効にするには、noneでその重要度をに設定します。

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0073.severity = none

詳細については、「 コード分析の警告を抑制する方法」を参照してください。

こちらも参照ください