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.
O MSTest fornece um ciclo de vida bem definido para classes de teste e métodos de teste, permitindo que operações de instalação e de teardown sejam executadas em vários estágios do processo de execução do teste. O ciclo de vida pode ser agrupado nos três estágios a seguir:
- Ciclo de vida em nível de assembly
- Ciclo de vida no nível da classe
- Ciclo de vida do nível de teste
A execução dos eventos do ciclo de vida ocorre do nível mais alto (assembly) ao nível mais baixo (método de teste). A ordem de execução é a seguinte:
- Inicialização do Assembly
- Inicialização de classe (para cada classe de teste)
- Inicialização de teste (para cada método de teste)
- Execução de teste
- Limpeza dos testes (para cada método individual de teste)
- Limpeza de Classe (para cada classe de teste)
- Limpeza de código assembly
Ciclo de vida no nível da montagem
O ciclo de vida do assembly descreve o ciclo de vida de todo o assembly, que inclui todas as classes de teste e métodos. Para gerenciar o ciclo de vida do assembly, o MSTest fornece os atributos AssemblyInitialize e AssemblyCleanup . Para saber mais sobre esses atributos, consulte a documentação AssemblyInitialize e AssemblyCleanup .
Ciclo de vida em nível de classe
O ciclo de vida da classe de teste refere-se ao ciclo de vida de classes de teste individuais dentro do assembly e pode ser implementado usando os atributos ClassInitialize e ClassCleanup . Esses atributos permitem que você defina métodos de configuração e teardown executados antes e depois de todos os testes em uma classe, respectivamente. Para obter mais informações sobre esses atributos, consulte a documentação ClassInitialize e ClassCleanup . O ciclo de vida de nível de classe é executado apenas uma vez por classe, independentemente do número de testes em uma classe.
Ciclo de vida em nível de teste
O ciclo de vida do nível de teste é realizado para cada método de teste. Para testes parametrizados, cada conjunto de parâmetros é tratado como um método de teste separado e o ciclo de vida é executado para cada conjunto de parâmetros. O ciclo de vida dos níveis de teste pode ser agrupado em configuração, execução e limpeza, que oferecem suporte a várias maneiras de implementação.
Configuração
A fase de instalação do ciclo de vida do nível de teste é responsável por preparar o ambiente de teste antes da execução de cada método de teste. Isso pode ser obtido usando o TestInitialize
atributo ou implementando um construtor na classe de teste. No caso de herança, a execução de TestInitialize
métodos segue a ordem da classe base para a classe derivada. Se uma classe de teste implementar um construtor, ela será executada antes do TestInitialize
método. Para saber mais sobre o TestInitialize
atributo, consulte a documentação do atributo de nível de teste .
Observação
Ao contrário do construtor de classe, TestInitialize
os métodos podem ser assíncronos e também dar suporte ao uso de atributo, como o TimeoutAttribute
.
Execução
A fase de execução é a fase em que o método de teste real é executado. Se um método de teste retornar um Task ou um ValueTask, o método de teste será aguardado.
Aviso
No caso de métodos de teste assíncronos, nenhum SynchronizationContext é fornecido. Isso não se aplica a UITestMethod
testes para UWP e WinUI, pois eles são executados no thread da interface do usuário que tem um SynchronizationContext.
Limpeza
A fase de limpeza do ciclo de vida do nível de teste é responsável por limpar o ambiente de teste após a execução de cada método de teste.
Isso pode ser obtido usando o TestCleanup
atributo ou implementando a IDisposable
/IAsyncDisposable
interface na classe de teste.
Se uma classe de teste implementar IDisposable
ou IAsyncDisposable
, seu Dispose
/DisposeAsync
método será executado após o TestCleanup
método.
No caso de herança, a execução de TestCleanup
métodos segue a ordem da classe derivada para a classe base.
Para saber mais sobre o TestInitialize
atributo, consulte a documentação do atributo de nível de teste .
Pedido
A ordem completa do ciclo de vida do nível de teste é a seguinte:
- Criar instância da classe de teste
- Defina a propriedade
TestContext
se estiver presente - Executar TestInitialize (se implementado)
- Execução do método de teste
- Atualizar
TestContext
com os resultados do teste (como a propriedadeOutcome
) - Executar TestCleanup se implementado
- Executar DisposeAsync se implementado
- Executar Liberar caso esteja implementado