Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo è destinato agli sviluppatori che creano framework di test personalizzati o estensioni per Microsoft.Testing.Platform.
Nota
Per il codice di esempio completo, vedere TestingPlatformExamples nel repository di Microsoft Test Framework.
Riepilogo del punto di estensione
| Punto di estensione | All'interno/Fuori dal processo | Scopo |
|---|---|---|
| ITestFramework | In corso | L'unica estensione obbligatoria. Individua ed esegue test. |
| IDataConsumer | In corso | Sottoscrive ed elabora i dati di test dal bus di messaggi. |
| ITestSessionLifetimeHandler | In corso | Esegue il codice prima e dopo una sessione di test. |
| ITestApplicationLifecycleCallbacks | In corso | Esegue il codice all'inizio e alla fine dell'host di test. |
| ICommandLineOptionsProvider | Entrambi | Aggiunge opzioni della riga di comando personalizzate. |
| ITestHostEnvironmentVariableProvider | Fuori processo | Imposta le variabili di ambiente prima dell'avvio dell'host di test. |
| ITestHostProcessLifetimeHandler | Fuori processo | Osserva il processo host di test esternamente. |
Estensioni in-process e out-of-process
Le estensioni sono suddivise in due tipi:
Le estensioni in-process vengono eseguite all'interno del processo host di test, insieme al framework di test. Registrali tramite
builder.TestHost:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHost.AddXXX(/* ... */);Le estensioni out-of-process vengono eseguite in un processo separato che osserva l'host di test. Registrali tramite
builder.TestHostControllers:var builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
Le estensioni fuori dal processo sono necessarie quando:
- È necessario impostare le variabili di ambiente prima dell'avvio dell'host di test.
- È necessario monitorare l'host di test esternamente perché il codice utente potrebbe causare l'arresto anomalo o il blocco del processo.
Quando viene registrata un'estensione out-of-process, la piattaforma avvia automaticamente un secondo processo.
Interfaccia IExtension
Tutti i punti di estensione ereditano da IExtension, che fornisce l'identificazione e l'adesione/la rinuncia opzionale.
public interface IExtension
{
string Uid { get; }
string Version { get; }
string DisplayName { get; }
string Description { get; }
Task<bool> IsEnabledAsync();
}
-
Uid: identificatore univoco per l'estensione. Scegliere un valore univoco per evitare conflitti. -
Version: La versione dell'estensione, utilizzando il versionamento semantico. -
DisplayName: un nome facile da usare che appare nei log e--infonell'output. -
Description: descrizione visualizzata nell'output--info. -
IsEnabledAsync(): Restituiscifalseper escludere l'estensione dalla sessione. In genere, le decisioni si basano sulle opzioni della configurazione o della riga di comando.
Cosa leggere successivamente
-
Creare un framework di test: creare un'implementazione personalizzata
ITestFramework, gestire le richieste e segnalare i risultati dei test. - Creazione di estensioni: creare estensioni in-process e out-of-process, come consumer di dati, gestori di sessione e monitor dei processi.
- VSTest Bridge: semplificare la migrazione di framework di test basati su VSTest esistenti a Microsoft.Testing.Platform.
- Funzionalità: dichiarare il framework di query e le funzionalità di estensione.
- Services: configurazione Access, registrazione, bus di messaggi e altri servizi della piattaforma.