Partilhar via


Regras de utilização do MSTest

As regras de utilização suportam o uso correto dos atributos, métodos e padrões do MSTest. Estas regras detetam erros comuns e garantem que os seus testes cumprem os requisitos e convenções do framework.

Regras nesta categoria

ID da regra Title Severity Correção disponível
MSTEST0002 A classe de teste deve ser válida. Advertência Yes
MSTEST0003 O método de teste deve ser válido. Aviso → Erro* Yes
MSTEST0005 TestContext deve ser válido. Advertência Yes
MSTEST0007 Use atributo no método de teste. Advertência Não
MSTEST0008 TestInitialize deve ser válido. Advertência Yes
MSTEST0009 TestCleanup deve ser válido. Advertência Yes
MSTEST0010 O ClassInitialize deve ser válido. Advertência Yes
MSTEST0011 O ClassCleanup deve ser válido. Advertência Yes
MSTEST0012 AssemblyInitialize deve ser válido. Advertência Yes
MSTEST0013 AssemblyCleanup deve ser válido. Advertência Yes
MSTEST0014 O DataRow deve ser válido. Advertência Yes
MSTEST0017 Os argumentos de asserção devem ser passados pela ordem correta. Informações Yes
MSTEST0018 O DynamicData deve ser válido. Advertência Yes
MSTEST0023 Não negues a afirmação booleana. Informações Yes
MSTEST0024 Não armazene o TestContext estático. Advertência Não
MSTEST0026 Os args de asserção devem evitar o acesso condicional. Informações Não
MSTEST0030 O tipo que contém o método de teste deve ser uma classe de teste. Advertência Yes
MSTEST0031 Não use System.ComponentModel.DescriptionAttribute. Informações Yes
MSTEST0032 Reveja a condição de asseveração sempre verdadeira. Informações Não
MSTEST0034 Use ClassCleanupBehavior.EndOfClass. Informações Yes
MSTEST0035 Use o DeploymentItem com método de teste ou classe de teste. Informações Não
MSTEST0037 Use métodos adequados de afirmação. Informações Yes
MSTEST0038 Evite Assert.AreSame com os tipos de valor. Informações Yes
MSTEST0039 Use métodos mais recentes do Assert.Throws. Informações Yes
MSTEST0040 Evite usar asserts em contexto void assíncrono. Advertência Não
MSTEST0041 Use atributos baseados em condição com a classe de teste. Advertência Não
MSTEST0042 O DataRow duplicado. Advertência Não
MSTEST0043 Utilize o atributo de repetição no método de teste. Aviso → Erro* Yes
MSTEST0046 Use Assert em vez de StringAssert. Informações Yes
MSTEST0048 Utilização de propriedades no TestContext. Advertência Não
MSTEST0049 Teste de Fluxo TestContext CancellationToken. Informações Yes
MSTEST0050 A configuração de teste global deve ser válida. Advertência Yes
MSTEST0051 Assert.Throws deve conter uma única instrução. Informações Yes
MSTEST0052 Evite o uso explícito do DynamicDataSourceType. Informações Yes
MSTEST0053 Evite parâmetros de formatação Assert. Informações Yes
MSTEST0054 Utilize a propriedade CancellationToken. Informações Yes
MSTEST0055 Não ignore o valor de retorno do método string. Advertência Não
MSTEST0056 TestMethodAttribute deve definir corretamente o DisplayName. Informações Yes
MSTEST0057 TestMethodAttribute deve propagar a informação de origem. Advertência Não
MSTEST0058 Evite assertivas nos blocos de captura. Informações Não
MSTEST0059 Use corretamente o atributo Parallelize. Advertência Não
MSTEST0060 Duplicate TestMethodAttribute. Advertência Yes
MSTEST0061 Usa o atributo OSCondition em vez de verificação em tempo de execução. Informações Yes
MSTEST0062 Evite parâmetros de teste do tipo out/ref. Advertência Yes
MSTEST0063 A classe de teste deve ter um construtor válido. Advertência Não

* Escalado para Erro nos modos Recommended e All.

Cenários comuns

Validação da estrutura do teste

Certifique-se de que as suas classes, métodos e equipamentos de teste cumprem os requisitos do MSTest:

  • MSTEST0002: Requisitos de layout da classe de teste (por exemplo, público, não estático).
  • MSTEST0003: Requisitos de formato do método de teste (️⚠ elevado a Erro).
  • MSTEST0030: Métodos com [TestMethod] devem estar numa [TestClass].
  • MSTEST0063: Validação do construtor da classe de teste.

Métodos de ciclo de vida

Validar métodos de inicialização e limpeza:

Testes orientados por dados

Garantir que os atributos dos dados são usados corretamente:

Escrever melhores afirmações

Regras para o uso correto e eficaz da afirmação:

  • MSTEST0017: Passar esperado/real na ordem correta.
  • MSTEST0023: Não negues condições (usa diretamente o Assert.IsFalse).
  • MSTEST0026: Evitar operadores nulos-condicionais nas asserções.
  • MSTEST0032: Revê condições sempre verdadeiras.
  • MSTEST0037: Use o método de afirmação mais adequado.
  • MSTEST0038: Não uses AreSame com tipos de valor.
  • MSTEST0039: Utilize Assert.ThrowsExactly (API mais recente).
  • MSTEST0046: Prefira Assert em vez de StringAssert.
  • MSTEST0051: Assert.Throws deve testar uma única instrução.
  • MSTEST0053: Use interpolação de strings em vez de parâmetros de formato.
  • MSTEST0058: Não coloque assertivas em blocos catch.

Utilização no TestContext

Uso correto do objeto TestContext:

  • MSTEST0005: Validação da propriedade TestContext.
  • MSTEST0024: Não armazene o TestContext em campos estáticos.
  • MSTEST0048: Acesso restrito à propriedade nos fixtures.
  • MSTEST0049: Tokens de cancelamento de fluxo do TestContext.
  • MSTEST0054: Use a propriedade TestContext.CancellationToken.

Padrões assíncronos

Regras para código de teste assíncrono:

  • MSTEST0040: Evite assertivas em métodos void assíncronos.

Configuração de teste

  • MSTEST0031: Use atributos adequados (não System.ComponentModel.Description).
  • MSTEST0035: Utilização do DeploymentItem.
  • MSTEST0041: Os atributos de condição devem estar nas classes de teste.
  • MSTEST0043: Os atributos de retentativa devem estar nos métodos de teste. (⚠️ elevado para Erro).
  • MSTEST0055: Não ignore os valores de retorno de um método de string.
  • MSTEST0056: Defina corretamente o DisplayName no TestMethodAttribute.
  • MSTEST0057: Propagar informações da origem no atributo TestMethod personalizado.
  • MSTEST0059: Não use simultaneamente Parallelize e DoNotParallelize.
  • MSTEST0060: Evite duplicar o TestMethodAttribute.
  • MSTEST0061: Use o atributo OSCondition para verificações de plataforma.