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 recurso [ResourceLock]. |
Informações | Não |
| MSTEST0074 | Um teste que modifica o estado global do processo 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 |
| MSTEST0082 | Uma classe de teste herda um método de teste ou ciclo de vida de uma versão diferente do MSTest. | Aviso | Não |
| MSTEST0083 | Use [ExecutableCondition] em vez de File.Exists verificações antes de Process.Start. |
Informações | Yes |
* 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.
- MSTEST0082: mantenha classes de teste base e derivadas na mesma versão principal do MSTest.
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 fixture de assemblies compartilhados com compilação antecipada.
- MSTEST0082: Recompile os métodos do ciclo de vida herdados com base na versão do MSTest do projeto de teste.
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: Restringir mutações ao 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 em tempo de execução. -
MSTEST0080: Use
CIConditionem vez das verificações de ambiente. - MSTEST0081: Validar registros do provedor de filtro de teste.
- MSTEST0082: detectar testes herdados e métodos de ciclo de vida compilados em outra versão principal do MSTest.
-
MSTEST0083: Use
ExecutableConditionem vez de uma verificação executável em estilo imperativo.