MSTEST0068: Use Assert em vez de CollectionAssert

Property Valor
ID da regra MSTEST0068
Title Use Assert em vez de CollectionAssert
Category Utilização
A correção é invasiva ou não invasiva Inquebrável
Ativado por padrão Yes
Severidade padrão Informações
Introduzido na versão 4.3.0
Existe uma correção de código Yes

Note

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

Motivo

Um método de ensaio utiliza CollectionAssert métodos em vez de métodos equivalentes Assert .

Descrição da regra

A maior parte dos métodos CollectionAssert tem equivalentes em Assert que oferecem a mesma funcionalidade. Prefiro métodos Assert para consistência, melhor legibilidade, melhor descoberta e alinhamento com o comportamento em todos os frameworks de teste.

Os seguintes CollectionAssert métodos 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 da ordem dos parâmetros para Contains, DoesNotContain, e AllItemsAreInstancesOfType. Em Assert, o valor esperado é sempre o primeiro parâmetro.

As sobrecargas de AreEqual/AreNotEqual que aceitam um IComparer são ignoradas porque Assert.AreSequenceEqual espera um IEqualityComparer<T> (semântica diferente). As sobrecargas de AreEquivalent/AreNotEquivalent que aceitam 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

Utilize o corretor de código fornecido para substituir automaticamente as chamadas de método CollectionAssert pelas chamadas aos métodos equivalentes Assert. Também podes substituir manualmente as chamadas de método, se necessário.

Quando suprimir avisos

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

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

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

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade 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.