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.
Este artigo destina-se a programadores que estão a criar frameworks de teste personalizados ou extensões para o Microsoft.Testing.Platform.
Observação
Para código de exemplo completo, consulte TestingPlatformExamples no repositório Microsoft Test Framework.
Resumo dos pontos de extensão
| Ponto de extensão | Dentro/Fora do processo | Propósito |
|---|---|---|
| ITestFramework | Em processo | A única extensão obrigatória. Descobre e faz testes. |
| IDataConsumer | Em processo | Subscreve e processa dados de teste a partir do barramento de mensagens. |
| ITestSessionLifetimeHandler | Em processo | Executa código antes e depois de uma sessão de teste. |
| ITestApplicationLifecycleCallbacks | Em processo | Executa código no início e no final do host de teste. |
| ICommandLineOptionsProvider | Ambos | Adiciona opções de linha de comandos personalizadas. |
| ITestHostEnvironmentVariableProvider | Fora de processo | Define variáveis de ambiente antes do início do host de teste. |
| ITestHostProcessLifetimeHandler | Fora de processo | Observa o processo anfitrião de teste externamente. |
Extensões no processo vs fora do processo
As extensões são categorizadas em dois tipos:
Extensões em processo correm dentro do processo anfitrião de teste, juntamente com o framework de teste. Registe-os através de
builder.TestHost:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHost.AddXXX(/* ... */);Extensões fora do processo executam-se num processo separado que observa o host de teste. Registe-os através de
builder.TestHostControllers:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
Extensões fora do processo são necessárias quando:
- Tens de definir variáveis de ambiente antes de o host de teste começar.
- Precisas de monitorizar o host de teste externamente porque o código do utilizador pode crashar ou bloquear o processo.
Quando qualquer extensão fora do processo é registada, a plataforma inicia automaticamente um segundo processo.
O interface IExtension
Todos os pontos de extensão herdam de IExtension, que fornece identificação e permite aceitar/rejeitar funcionalidades ("opt-in/opt-out").
public interface IExtension
{
string Uid { get; }
string Version { get; }
string DisplayName { get; }
string Description { get; }
Task<bool> IsEnabledAsync();
}
-
Uid: Um identificador único para a extensão. Escolha um valor único para evitar conflitos. -
Version: A versão da extensão, usando versionamento semântico. -
DisplayName: Um nome fácil de usar que aparece nos registos e--infona saída. -
Description: Uma descrição que aparece na saída--info. -
IsEnabledAsync(): Retornefalsepara excluir a extensão da sessão. Normalmente, as decisões baseiam-se em opções de configuração ou de linha de comandos.
O que ler a seguir
-
Construa um framework de testes: Crie uma implementação personalizada
ITestFramework, trate dos pedidos e reporte os resultados dos testes. - Construir extensões: Crie extensões em processo e fora do processo, como consumidores de dados, manipuladores de sessão e monitores de processos.
- VSTest Bridge: Simplificar a migração dos frameworks de teste existentes baseados em VSTest para Microsoft.Testing.Platform.
- Capacidades: Declarar e consultar estruturas e capacidades de extensão.
- Serviços: Configuração de acesso, registo, barramento de mensagens e outros serviços de plataforma.