Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 configuração e desmontagem sejam executadas em vários estágios do processo de execução do teste. O ciclo de vida pode ser agrupado nas seguintes três etapas:
- Ciclo de vida no nível da montagem
- Ciclo de vida a nível de classe
- Ciclo de vida em nível de teste
A execução dos eventos do ciclo de vida ocorre do nível mais alto (montagem) 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 do teste (para cada método de teste)
- Execução de Testes
- Limpeza após os testes (para cada método de teste)
- Limpeza da Aula (por cada aula de teste)
- Limpeza pós-montagem
Ciclo de vida no nível da montagem
O ciclo de vida da montagem descreve o ciclo de vida de toda a montagem, que inclui todas as classes e métodos de teste. 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 de 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 desmontagem que são 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 do nível da classe é executado apenas uma vez por classe, independentemente do número de testes em uma classe.
Ciclo de vida do nível de teste
O ciclo de vida do nível de teste é executado 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 do nível de teste pode ser agrupado em configuração, execução e desmontagem, com a configuração e a desmontagem suportando várias formas de implementação.
Configuração
A fase de configuraçã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 conseguido 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 implementa um construtor, ela é 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, os métodos podem ser assíncronos e também suportam o uso de atributos, TestInitialize
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 ValueTask, o método de teste será aguardado.
Advertência
No caso de métodos de teste assíncronos, nenhum SynchronizationContext é fornecido. Isso não se aplica a testes para UWP e WinUI, pois são executados na thread da interface do utilizador que possui um UITestMethod
.
Limpeza
A fase de limpeza do ciclo de vida do nível de teste é responsável pela limpeza do ambiente de teste após a execução de cada método de teste.
Isso pode ser conseguido usando o TestCleanup
atributo ou implementando a IDisposable
/IAsyncDisposable
interface na classe de teste.
Se uma classe de teste implementa IDisposable
ou IAsyncDisposable
, seu Dispose
/DisposeAsync
método é executado após o TestCleanup
método.
Em caso de herança, a execução dos 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 .
Encomenda
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 - Execute TestInitialize (se implementado)
- Execução do método de ensaio
- Atualizar
TestContext
com resultados dos testes (tal como a propriedadeOutcome
) - Execute TestCleanup se implementado
- Execute DisposeAsync caso esteja implementado
- Executar Eliminar, se implementado