MSTEST0068: usare Assert anziché CollectionAssert

Proprietà Value
ID regola MSTEST0068
Titolo Usare Assert anziché CollectionAssert
Categoria Utilizzo
La modifica è dirompente o non dirompente Non-breaking
Abilitato per impostazione predefinita
Gravità predefinita Informazioni
introdotta nella versione 4.3.0
È presente una correzione del codice

Annotazioni

Questa regola è disponibile a partire da MSTest 4.3.

Cause

Un metodo di test utilizza metodi CollectionAssert invece di metodi equivalenti Assert.

Descrizione regola

La maggior parte dei CollectionAssert metodi ha controparti equivalenti in Assert che forniscono la stessa funzionalità. Preferisce i Assert metodi per coerenza, migliore leggibilità, individuabilità migliorata e allineamento con il comportamento in tutti i framework di test.

I metodi seguenti CollectionAssert hanno metodi equivalenti 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)

Avvertimento

Quando si esegue la migrazione da CollectionAssert a Assert, prestare attenzione alla modifica nell'ordine dei parametri per Contains, DoesNotContaine AllItemsAreInstancesOfType. In Assertil valore previsto è sempre il primo parametro.

Gli overload di AreEqual/AreNotEqual che accettano un oggetto IComparer vengono ignorati perché Assert.AreSequenceEqual si aspetta un oggetto IEqualityComparer<T> (semantica diversa). Anche gli overload di AreEquivalent/AreNotEquivalent che accettano un IEqualityComparer<T> vengono ignorati. IsSubsetOf / IsNotSubsetOf non hanno un equivalente diretto Assert oggi e non sono gestiti.

Come correggere le violazioni

Utilizzare l'utilità di correzione del codice fornita per sostituire automaticamente le chiamate ai metodi CollectionAssert con i corrispondenti metodi Assert. È anche possibile sostituire manualmente le chiamate al metodo, se necessario.

Quando eliminare gli avvisi

Non eliminare gli avvisi da questa regola. I Assert metodi offrono la stessa funzionalità con coerenza migliore.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.