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.
Este artigo é para desenvolvedores que criam estruturas de teste personalizadas ou extensões para Microsoft.Testing.Platform.
Observação
Para obter o código de exemplo completo, consulte o TestingPlatformExamples no repositório do Microsoft Test Framework.
Resumo do ponto de extensão
| Ponto de extensão | Entrada/saída do processo | Propósito |
|---|---|---|
| ITestFramework | Em andamento | A única extensão obrigatória. Descobre e executa testes. |
| IDataConsumer | Em andamento | Assina e processa dados de teste do sistema de mensagens. |
| ITestSessionLifetimeHandler | Em andamento | Executa o código antes e depois de uma sessão de teste. |
| ITestApplicationLifecycleCallbacks | Em andamento | Executa o código no início e no final do host de teste. |
| ICommandLineOptionsProvider | Ambos | Adiciona opções de linha de comando personalizadas. |
| ITestHostEnvironmentVariableProvider | Fora do processo | Define variáveis de ambiente antes do início do host de teste. |
| ITestHostProcessLifetimeHandler | Fora do processo | Observa o processo de host de teste externamente. |
Extensões in-process versus processos externos
As extensões são categorizadas em dois tipos:
As extensões em processo são executadas dentro do processo de host de teste, juntamente com a estrutura de teste. Registre-os por meio de
builder.TestHost:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHost.AddXXX(/* ... */);As extensões fora de processo são executadas em um processo separado que observa o host de teste. Registre-os por meio de
builder.TestHostControllers:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
Extensões fora do processo são necessárias quando:
- Você precisa definir variáveis de ambiente antes do host de teste ser iniciado.
- Você precisa monitorar o host de teste externamente porque o código do usuário pode falhar ou desligar o processo.
Quando qualquer extensão fora do processo é registrada, a plataforma inicia um segundo processo automaticamente.
A interface IExtension.
Todos os pontos de extensão herdam de IExtension, que fornece identificação e opções de participação/opção de não participação.
public interface IExtension
{
string Uid { get; }
string Version { get; }
string DisplayName { get; }
string Description { get; }
Task<bool> IsEnabledAsync();
}
-
Uid: um identificador exclusivo para a extensão. Escolha um valor exclusivo para evitar conflitos. -
Version: A versão da extensão, usando versionamento semântico. -
DisplayName: um nome amigável que aparece em logs e--infosaída. -
Description: uma descrição que aparece na saída de--info. -
IsEnabledAsync(): retornefalsepara excluir a extensão da sessão. Normalmente, as decisões são baseadas em opções de configuração ou linha de comando.
O que ler a seguir
-
Crie uma estrutura de teste: crie uma implementação personalizada
ITestFramework, manipule solicitações e relate os resultados do teste. - Extensões de compilação: Crie extensões em processo e fora de processo, como consumidores de dados, manipuladores de sessão e monitores de processo.
- Ponte VSTest: simplifique a migração de estruturas de teste baseadas em VSTest existentes para Microsoft.Testing.Platform.
- Funcionalidades: declarar e consultar recursos de estrutura e extensão.
- Services: Configuração de acesso, registros de log, barramento de mensagens e outros serviços de plataforma.