MSTEST0068: Usar Assert en lugar de CollectionAssert

Propiedad Value
Identificador de la regla MSTEST0068
Título Usar Assert en lugar de CollectionAssert
Category Usage
La corrección es problemática o no problemática Non-breaking
Habilitado de forma predeterminada
Gravedad predeterminada Información
introducido en la versión 4.3.0
¿Hay una corrección de código?

Nota:

Esta regla está disponible a partir de MSTest 4.3.

Causa

Un método de prueba usa CollectionAssert métodos en lugar de métodos equivalentes Assert .

Descripción de la regla

La mayoría CollectionAssert de los métodos tienen equivalentes equivalentes en Assert que proporcionan la misma funcionalidad. Prefiere los métodos Assert por su coherencia, mayor legibilidad, mayor facilidad para encontrarlos y alineación con el comportamiento de todos los frameworks de pruebas.

Los métodos siguientes CollectionAssert tienen métodos equivalentes 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)

Advertencia

Al migrar de CollectionAssert a Assert, ten cuidado con el cambio en el orden de los parámetros de Contains, DoesNotContain y AllItemsAreInstancesOfType. En Assert, el valor esperado siempre es el primer parámetro.

Las sobrecargas de AreEqual/AreNotEqual que aceptan un(a) IComparer se omiten porque Assert.AreSequenceEqual espera un(a) IEqualityComparer<T> (semántica diferente). También se omiten las sobrecargas de AreEquivalent/AreNotEquivalent que aceptan un IEqualityComparer<T>. IsSubsetOf / IsNotSubsetOf no tienen ningún equivalente directo Assert en la actualidad y no se admiten.

Cómo corregir infracciones

Use el corrector de código proporcionado para reemplazar automáticamente las llamadas al método CollectionAssert por sus métodos equivalentes Assert. También puede reemplazar manualmente las llamadas al método si es necesario.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla. Los Assert métodos proporcionan la misma funcionalidad con una mejor coherencia.

Supresión de una advertencia

Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

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

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.

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

Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.