MSTEST0068: CollectionAssert の代わりに Assert を使用する

財産 価値
ルール識別子 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に移行する場合は、ContainsDoesNotContain、およびAllItemsAreInstancesOfTypeのパラメーター順序の変更に注意してください。 Assertでは、予期される値は常に最初のパラメーターです。

AreEqualを受け取る/AreNotEqualIComparerのオーバーロードはスキップされます。Assert.AreSequenceEqualIEqualityComparer<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

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