| 財産 | 価値 |
|---|---|
| ルール識別子 | MSTEST0068 |
| タイトル |
Assert の代わりに CollectionAssert を使用する |
| Category | Usage |
| 修正が破壊的か非破壊的か | Non-breaking |
| 既定で有効 | はい |
| 既定の重大度 | 情報 |
| バージョン で導入された | 4.3.0 |
| コード修正はありますか | はい |
注
この規則は、MSTest 4.3 以降で使用できます。
原因
テスト メソッドでは、同等のCollectionAssert メソッドではなく、Assert メソッドを使用します。
ルールの説明
ほとんどの CollectionAssert メソッドには、同じ機能を提供する同等の対応 Assert があります。 一貫性、読みやすさの向上、検出可能性の向上、およびすべてのテスト フレームワークでの動作との連携のために、 Assert メソッドを優先します。
次の CollectionAssert メソッドには、同等の Assert メソッドがあります。
-
CollectionAssert.AreEqual(a, b)→Assert.AreSequenceEqual(a, b) -
CollectionAssert.AreNotEqual(a, b)→Assert.AreNotSequenceEqual(a, b) -
CollectionAssert.AreEquivalent(a, b)→Assert.AreSequenceEqual(a, b, SequenceOrder.InAnyOrder) -
CollectionAssert.AreNotEquivalent(a, b)→Assert.AreNotSequenceEqual(a, b, SequenceOrder.InAnyOrder) -
CollectionAssert.AllItemsAreNotNull(a)→Assert.AreAllNotNull(a) -
CollectionAssert.AllItemsAreUnique(a)→Assert.AreAllDistinct(a) -
CollectionAssert.AllItemsAreInstancesOfType(collection, typeof(T))→Assert.AreAllOfType<T>(collection) -
CollectionAssert.Contains(collection, value)→Assert.Contains(value, collection) -
CollectionAssert.DoesNotContain(collection, value)→Assert.DoesNotContain(value, collection)
Warning
CollectionAssertからAssertに移行する場合は、Contains、DoesNotContain、およびAllItemsAreInstancesOfTypeのパラメーター順序の変更に注意してください。
Assertでは、予期される値は常に最初のパラメーターです。
AreEqualを受け取る/AreNotEqualIComparerのオーバーロードはスキップされます。Assert.AreSequenceEqualはIEqualityComparer<T> (異なるセマンティクス) を想定しているためです。
IEqualityComparer<T> を引数として受け取る AreEquivalent/AreNotEquivalent のオーバーロードもスキップされます。
IsSubsetOf
/
IsNotSubsetOf 現在、直接 Assert 同等のものはなく、処理されません。
違反を修正する方法
指定されたコード修正プログラムを使用して、 CollectionAssert メソッド呼び出しを同等の Assert メソッドに自動的に置き換えます。 必要に応じて、メソッド呼び出しを手動で置き換えることもできます。
どのようなときに警告を抑制するか
このルールからの警告は抑制しないでください。 Assertメソッドは、同じ機能をより一貫性のあるものにしています。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable MSTEST0068
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0068
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、noneでその重要度をに設定します。
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0068.severity = none
詳細については、「 コード分析の警告を抑制する方法」を参照してください。
.NET