Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As regras de uso dão suporte ao uso adequado de atributos, métodos e padrões do MSTest. Essas regras capturam erros comuns e garantem que seus testes sigam os requisitos e convenções da estrutura.
Regras nesta categoria
| ID da regra | Title | Severity | Correção disponível |
|---|---|---|---|
| MSTEST0002 | A classe de teste deve ser válida. | Aviso | Yes |
| MSTEST0003 | O método de teste deve ser válido. | Aviso → Erro* | Yes |
| MSTEST0005 | TestContext deve ser válido. | Aviso | Yes |
| MSTEST0007 | Use o atributo no método de teste. | Aviso | Não |
| MSTEST0008 | TestInitialize deve ser válido. | Aviso | Yes |
| MSTEST0009 | TestCleanup deve ser válido. | Aviso | Yes |
| MSTEST0010 | ClassInitialize deve ser válido. | Aviso | Yes |
| MSTEST0011 | ClassCleanup deve ser válido. | Aviso | Yes |
| MSTEST0012 | AssemblyInitialize deve ser válido. | Aviso | Yes |
| MSTEST0013 | AssemblyCleanup deve ser válido. | Aviso | Yes |
| MSTEST0014 | DataRow deve ser válido. | Aviso | Yes |
| MSTEST0017 | Os args de asserção devem ser passados na ordem correta. | Informações | Yes |
| MSTEST0018 | DynamicData deve ser válido. | Aviso | Yes |
| MSTEST0023 | Não negue a asserção booliana. | Informações | Yes |
| MSTEST0024 | Não armazene TestContext estático. | Aviso | Não |
| MSTEST0026 | Os argumentos de declaraçã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. | Aviso | Yes |
| MSTEST0031 | Não use System.ComponentModel.DescriptionAttribute. | Informações | Yes |
| MSTEST0032 | Revise a condição de declarações sempre verdadeiras. | Informações | Não |
| MSTEST0034 | Use ClassCleanupBehavior.EndOfClass. | Informações | Yes |
| MSTEST0035 | Use DeploymentItem com método de teste ou classe de teste. | Informações | Não |
| MSTEST0037 | Use métodos de asserção adequados. | Informações | Yes |
| MSTEST0038 | Evite Assert.AreSame com tipos de valor. | Informações | Yes |
| MSTEST0039 | Use métodos Assert.Throws mais recentes. | Informações | Yes |
| MSTEST0040 | Evite o uso de declarações no contexto nulo assíncrono. | Aviso | Não |
| MSTEST0041 | Use atributos baseados em condição com classe de teste. | Aviso | Yes |
| MSTEST0042 | Duplique DataRow. | Aviso | Não |
| MSTEST0043 | Use o atributo de repetição no método de teste. | Aviso → Erro* | Yes |
| MSTEST0046 | Use Assert em vez de StringAssert. | Informações | Yes |
| MSTEST0048 | Uso da propriedade TestContext. | Aviso | Não |
| MSTEST0049 | Fluxo TestContext CancellationToken. | Informações | Yes |
| MSTEST0050 | O acessório de teste global deve ser válido. | Aviso | Yes |
| MSTEST0051 | Assert.Throws deve conter uma única instrução. | Informações | Yes |
| MSTEST0052 | Evite DynamicDataSourceType explícito. | Informações | Yes |
| MSTEST0053 | Evite usar parâmetros de formato do comando assert. | Informações | Yes |
| MSTEST0054 | Use a propriedade CancellationToken. | Informações | Yes |
| MSTEST0055 | Não ignore o valor retornado do método de string. | Aviso | Não |
| MSTEST0056 | TestMethodAttribute deve definir DisplayName corretamente. | Informações | Yes |
| MSTEST0057 | TestMethodAttribute deve propagar informações de origem. | Aviso | Não |
| MSTEST0058 | Evite declarações em blocos catch. | Informações | Não |
| MSTEST0059 | Use o atributo Parallelize corretamente. | Aviso | Não |
| MSTEST0060 | Atributo "TestMethodAttribute" duplicado. | Aviso | Yes |
| MSTEST0061 | Use o atributo OSCondition em vez da verificação de runtime. | Informações | Yes |
| MSTEST0062 | Evite os parâmetros out/ref nos métodos de teste. | Aviso | Yes |
| MSTEST0063 | A classe de teste deve ter um construtor válido. | Aviso | Não |
| MSTEST0064 | Prefira métodos de asserção assíncrona. | Informações | Não |
| MSTEST0065 | Evite Assert.AreEqual em tipos de coleção. |
Aviso | Não |
| MSTEST0067 | Evite bloquear chamadas de forma síncrona no código de teste. | Informações (desabilitadas por padrão) | Não |
| MSTEST0068 | Use Assert em vez de CollectionAssert. |
Informações | Yes |
| MSTEST0069 |
[TestClass] herdado é ignorado pelo gerador de código-fonte de MSTest. |
Aviso | Não |
| MSTEST0070 |
[MemberCondition] os argumentos devem ser válidos. |
Aviso | Não |
| MSTEST0071 | O método de teste não deve especificar um nome de exibição igual ao seu nome. | Informações | Yes |
| MSTEST0072 |
[AssemblyFixtureProvider] não há suporte para compilação antecipada. |
Aviso | Não |
| MSTEST0073 | Prefira uma constante para a chave de [ResourceLock] recurso. |
Informações | Não |
| MSTEST0074 | Testar a mutação do estado do processo global deve declarar um bloqueio de recurso. | Informações | Yes |
| MSTEST0075 | Evite alterar o diretório atual em um teste paralelizado. | Informações | Yes |
| MSTEST0076 | Evite alterar a cultura em todo o processo em um teste paralelizado. | Informações | Não |
| MSTEST0077 | Evite caminhos de sistema de arquivos codificados ou compartilhados em um teste paralelizado. | Informações | Não |
| MSTEST0078 |
[DependsOn] os argumentos devem ser válidos. |
Aviso | Não |
| MSTEST0079 | Use o atributo ArchitectureCondition em vez de verificações de runtime. | Informações | Yes |
| MSTEST0080 | Use o atributo CICondition em vez de verificações de ambiente. | Informações | Yes |
| MSTEST0081 |
[TestFilterProvider] deve fazer referência a um tipo de filtro de teste válido. |
Aviso | Não |
* Escalonado para erro nos modos Recommended e All.
Cenários comuns
Validação da estrutura de teste
Verifique se suas classes de teste, métodos e acessórios seguem os requisitos do MSTest:
- MSTEST0002: testar requisitos de layout de classe (por exemplo, público, não estático).
- MSTEST0003: Requisitos de layout do método de teste (⚠️ escalonado para Erro).
- MSTEST0030: métodos com [TestMethod] devem estar em um [TestClass].
- MSTEST0063: validação do construtor de classe de teste.
- MSTEST0069: aplique [TestClass] diretamente para que a descoberta gerada pela origem localize a classe.
Métodos de ciclo de vida
Validar métodos de inicialização e limpeza:
- MSTEST0008: TestInitialize validação.
- MSTEST0009: validação TestCleanup.
- MSTEST0010: Validação de ClassInitialize.
- MSTEST0011: Validação de ClassCleanup.
- MSTEST0012: validação AssemblyInitialize.
- MSTEST0013: Validação AssemblyCleanup.
- MSTEST0034: Definir ClassCleanupBehavior.EndOfClass.
- MSTEST0050: validação de dispositivo de teste global.
- MSTEST0072: não use provedores de instalação de assembly compartilhado com compilação antecipada.
Teste controlado por dados
Verifique se os atributos de dados são usados corretamente:
- MSTEST0007: os atributos de dados devem estar em métodos de teste.
- MSTEST0014: validação de DataRow.
- MSTEST0018: validação de DynamicData.
- MSTEST0042: Identificar DataRows duplicados.
- MSTEST0052: Usar AutoDetect para DynamicDataSourceType.
- MSTEST0062: evite parâmetros de output/ref.
Escrevendo melhores assertivas
Regras para uso correto e eficaz da declaração:
- MSTEST0017: Insira o esperado/real na ordem correta.
- MSTEST0023: Não negar condições (usar Assert.IsFalse diretamente).
- MSTEST0026: evite operadores condicionais nulos em declarações.
- MSTEST0032: Revise condições que são sempre verdadeiras.
- MSTEST0037: use o método de declaração mais apropriado.
- MSTEST0038: não use AreSame com tipos de valor.
- MSTEST0039: Use Assert.ThrowsExactly (API mais recente).
- MSTEST0046: prefira Afirmar em vez de StringAssert.
- MSTEST0051: Assert.Throws deve testar uma única instrução.
- MSTEST0053: use a interpolação de cadeia de caracteres em vez de formatar parâmetros.
- MSTEST0058: Não coloque asserções em blocos de captura.
- MSTEST0064: prefira métodos de asserção assíncrona em vez de bloquear o código assíncrono.
-
MSTEST0065: evite
Assert.AreEqualem tipos de coleção. -
MSTEST0068: Prefira
Assertem vez deCollectionAssert.
Uso de TestContext
Uso adequado do objeto TestContext:
- MSTEST0005: validação da propriedade TestContext.
- MSTEST0024: não armazene TestContext em campos estáticos.
- MSTEST0048: Acesso restrito a propriedades em acessórios.
- MSTEST0049: Tokens de cancelamento de fluxos do TestContext.
- MSTEST0054: Usar a propriedade TestContext.CancellationToken.
Padrões assíncronos
Regras para código de teste assíncrono:
- MSTEST0040: evite afirmações em métodos void assíncronos.
-
MSTEST0067: Evite
Thread.Sleep,Task.Waite outras chamadas de bloqueio síncrono no código de teste (opcional).
Segurança de teste paralela
Regras para testes executados em paralelo:
- MSTEST0073: use constantes compartilhadas para chaves de bloqueio de recursos.
- MSTEST0074: Bloquear mutações no estado global do processo.
- MSTEST0075: bloquear alterações de diretório atual.
- MSTEST0076: evite mutações culturais em todo o processo.
- MSTEST0077: evite caminhos de sistema de arquivos compartilhados.
Configuração de teste
- MSTEST0031: Use atributos adequados (não System.ComponentModel.Description).
- MSTEST0035: uso do DeploymentItem.
- MSTEST0041: os atributos de condição devem estar em classes de teste.
- MSTEST0043: Os atributos de repetição devem estar em métodos de teste (⚠️ escalonado para Erro).
- MSTEST0055: não ignore os valores de retorno do método de cadeia de caracteres.
- MSTEST0056: defina DisplayName corretamente em TestMethodAttribute.
- MSTEST0057: propagar informações de origem em TestMethodAttribute personalizado.
- MSTEST0059: Não use Parallelize e DoNotParallelize.
- MSTEST0060: Evite TestMethodAttribute duplicado.
- MSTEST0061: use o atributo OSCondition para verificações de plataforma.
-
MSTEST0070:
[MemberCondition]os argumentos devem referenciar membros válidos. - MSTEST0071: não defina um nome de exibição igual ao nome do método de teste.
-
MSTEST0078: validar
[DependsOn]destinos e grafos de dependência. -
MSTEST0079: use
ArchitectureConditionem vez de verificações de arquitetura de runtime. -
MSTEST0080: use
CIConditionem vez de verificações de ambiente. - MSTEST0081: validar registros do provedor de filtro de teste.