MSTEST0068: Usar Assert em vez de CollectionAssert

Property Valor
ID da regra MSTEST0068
Título Use Assert em vez de CollectionAssert
Categoria Uso
Correção interruptiva ou sem interrupção Non-breaking
Habilitado por padrão Yes
Severidade padrão Informações
introduzido na versão 4.3.0
Há uma correção de código Yes

Note

Essa regra está disponível a partir do MSTest 4.3.

Cause

Um método de teste usa métodos CollectionAssert em vez de métodos equivalentes Assert .

Descrição da regra

A maioria dos CollectionAssert métodos tem equivalentes Assert que fornecem a mesma funcionalidade. Prefira os Assert métodos para consistência, melhor legibilidade, melhor capacidade de descoberta e alinhamento com o comportamento em todas as estruturas de teste.

Os métodos CollectionAssert a seguir têm 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)

Warning

Ao migrar de CollectionAssert para Assert, tenha cuidado com a alteração na ordem de parâmetro para Contains, DoesNotContaine AllItemsAreInstancesOfType. Em Assert, o valor esperado é sempre o primeiro parâmetro.

Sobrecargas de AreEqual/AreNotEqual que recebem IComparer são ignoradas porque Assert.AreSequenceEqual espera IEqualityComparer<T> (semântica diferente). As sobrecargas de AreEquivalent/AreNotEquivalent que recebem um IEqualityComparer<T> também são ignoradas. IsSubsetOf / IsNotSubsetOf não têm equivalente direto Assert hoje e não são tratados.

Como corrigir violações

Use o corretor de código fornecido para substituir automaticamente as chamadas de método CollectionAssert pelos métodos Assert equivalentes. Você também pode substituir manualmente as chamadas de método, se necessário.

Quando suprimir avisos

Não suprima avisos dessa regra. Os Assert métodos fornecem a mesma funcionalidade com melhor consistência.

Suprimir um aviso

Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.

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

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

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

Para obter mais informações, consulte Como suprimir avisos de análise de código.