Sdílet prostřednictvím


Vytvoření vlastních rozšíření

Tento článek je určený pro vývojáře, kteří vytvářejí vlastní testovací architektury nebo rozšíření pro Microsoft.Testing.Platform.

Poznámka

Úplný ukázkový kód najdete v TestingPlatformExamples v úložišti Microsoft Test Framework.

Souhrn bodů rozšíření

Bod rozšíření Uvnitř/vně procesu Účel
ITestFramework Probíhající Jediné povinné rozšíření. Zjišťuje a spouští testy.
IDataConsumer Probíhající Přihlásí se k odběru a zpracuje testovací data ze sběrnice zpráv.
ITestSessionLifetimeHandler Probíhající Spustí kód před testovací relací a po ní.
ITestApplicationLifecycleCallbacks Probíhající Spustí kód na samém začátku a úplně na konci testovacího prostředí.
ICommandLineOptionsProvider Oboje Přidá vlastní možnosti příkazového řádku.
ITestHostEnvironmentVariableProvider Mimo proces Nastaví proměnné prostředí před spuštěním testovacího hostitele.
ITestHostProcessLifetimeHandler Mimo proces Externě sleduje proces hostitele testu.

In-proces versus out-of-proces rozšíření

Rozšíření jsou rozdělená do dvou typů:

  • Rozšíření v rámci procesu běží v rámci procesu testovacího hostitele společně s testovacím frameworkem. Zaregistrujte je prostřednictvím builder.TestHost:

    var builder = await TestApplication.CreateBuilderAsync(args);
    builder.TestHost.AddXXX(/* ... */);
    
  • Rozšíření mimo proces běží v samostatném procesu, který sleduje testovacího hostitele. Zaregistrujte je prostřednictvím builder.TestHostControllers:

    var builder = await TestApplication.CreateBuilderAsync(args);
    builder.TestHostControllers.AddXXX(/* ... */);
    

Rozšíření mimo proces jsou potřeba v těchto případech:

  • Před spuštěním testovacího hostitele musíte nastavit proměnné prostředí.
  • Testovacího hostitele je potřeba monitorovat externě, protože kód uživatele může proces zhroutí nebo zablokuje.

Když je zaregistrované jakékoli rozšíření mimo proces, platforma spustí druhý proces automaticky.

Rozhraní IExtension

Všechny body rozšíření dědí z IExtension, které poskytují identifikaci a možnost zapnutí/vypnutí:

public interface IExtension
{
    string Uid { get; }
    string Version { get; }
    string DisplayName { get; }
    string Description { get; }
    Task<bool> IsEnabledAsync();
}
  • Uid: Jedinečný identifikátor rozšíření. Zvolte jedinečnou hodnotu, abyste se vyhnuli konfliktům.
  • Version: Verze rozšíření pomocí sémantické správy verzí.
  • DisplayName: Uživatelsky přívětivý název, který se zobrazí v protokolech a --info výstupu.
  • Description: Popis, který se zobrazí ve --info výstupu.
  • IsEnabledAsync(): Vraťte false, aby bylo rozšíření vyloučeno z relace. Rozhodnutí jsou obvykle založená na konfiguraci nebo možnostech příkazového řádku.
  • Vytvoření testovací architektury: Vytvoření vlastní ITestFramework implementace, zpracování požadavků a hlášení výsledků testů
  • Vytváření rozšíření: Vytváření rozšíření v rámci procesu a mimo proces, jako jsou příjemci dat, obslužné rutiny relací a monitory procesů.
  • Most VSTest: Zjednodušte migraci stávajících testovacích frameworků založených na VSTest na Microsoft.Testing.Platform.
  • Možnosti: Deklarujte a dotazujte architekturu a možnosti rozšíření.
  • Služby: konfigurace Access, protokolování, sběrnice zpráv a další služby platformy.