Sdílet prostřednictvím


Přehled sady MSTest SDK

MSTest.Sdk je sada SDK projektu MSBuild pro vytváření aplikací MSTest. Bez této sady SDK je možné sestavit aplikaci MSTest, ale sada MSTest SDK je:

  • Přizpůsobené tak, aby poskytovalo prvotřídní prostředí pro testování pomocí MSTestu.
  • Doporučený cíl pro většinu uživatelů.
  • Snadno se konfiguruje pro ostatní uživatele.

Ve výchozím nastavení sada MSTest SDK zjišťuje a spouští testy pomocí msTest runneru pro Microsoft.Testing.Platform. Zadáním příkazu VSTest můžete přepnout na používání VSTest. <UseVSTest>true</UseVSTest>

V projektu můžete povolit MSTest.Sdk jednoduše aktualizací Sdk atributu Project uzlu vašeho projektu:

<Project Sdk="MSTest.Sdk/3.10.2">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Poznámka:

/3.10.2 je uveden jako příklad a lze ji nahradit libovolnou novější verzí.

Pro zjednodušení zpracování verzí doporučujeme nastavit verzi sady SDK na úrovni řešení pomocí souboru global.json . Soubor projektu by například vypadal takto:

<Project Sdk="MSTest.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Potom zadejte MSTest.Sdk verzi v souboru global.json následujícím způsobem:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.10.2"
    }
}

Další informace naleznete v tématu Použití sad SDK projektu MSBuild.

build Při projektu se obnoví a nainstalují všechny potřebné součásti pomocí standardního pracovního postupu NuGet nastaveného vaším projektem.

K sestavení a spuštění testů nepotřebujete nic jiného a můžete použít stejné nástroje (například dotnet test Visual Studio) používané " klasickým" projektem MSTest.

Důležité

Přepnutím na MSTest.Sdk se rozhodnete používat MSTest runner (umožní využití Microsoft.Testing.Platform pro MSTest), včetně dotnet test. To vyžaduje úpravu vašich volání CI a místního rozhraní příkazového řádku, a také ovlivňuje dostupné položky .runsettings. Můžete použít MSTest.Sdk a přitom zachovat staré integrace a nástroje tím, že místo toho přepnete spouštěč. Ve výchozím nastavení sada MSTest.Sdk nastaví EnableMSTestRunner a TestingPlatformDotnetTestSupport na hodnotu true. Další informace o dotnet test a jeho různých režimech pro spuštění Microsoft.Testing.Platform naleznete v tématu Testování pomocí dotnet test.

Pomocné knihovny testovacího nástroje

Pokud je projekt, který používá MSTest.Sdk, určen jako pomocná knihovna testovacího nástroje a neobsahuje žádné spustitelné testy, projekt by měl mít <IsTestApplication>false</IsTestApplication>.

Vyberte běžce

Sada MSTest SDK ve výchozím nastavení spoléhá na Microsoft.Testing.Platform, ale můžete přepnout na VSTest přidáním vlastnosti <UseVSTest>true</UseVSTest>.

Rozšíření Microsoft.Testing.Platform

Můžete přizpůsobit Microsoft.Testing.Platform prostředí pomocí sady rozšíření NuGet balíčků. Pro zjednodušení a zlepšení tohoto prostředí sada MSTest SDK zavádí dvě funkce:

Profil Microsoft.Testing.Platform

Koncept profilů umožňuje vybrat výchozí sadu konfigurací a rozšíření, která se použijí pro váš testovací projekt.

Profil můžete nastavit pomocí vlastnosti TestingExtensionsProfile s jedním z následujících tří profilů:

Tady je úplný příklad použití None profilu:

<Project Sdk="MSTest.Sdk/3.10.2">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <TestingExtensionsProfile>None</TestingExtensionsProfile>
    </PropertyGroup>

</Project>
Rozšíření/profil Žádný Výchozí AllMicrosoft
Pokrytí kódu ✔️ ✔️
výpis chyb ✔️
Padělky ✔️¹
Výpis z přerušení ✔️
Živé načítání ✔️
Opakovat ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+

Povolení nebo zákaz rozšíření

Rozšíření lze povolit a zakázat pomocí vlastností nástroje MSBuild se vzorem Enable[NugetPackageNameWithoutDots].

Pokud chcete například povolit rozšíření výpisu stavu systému (balíček NuGet Microsoft.Testing.Extensions.CrashDump), můžete použít následující vlastnost EnableMicrosoftTestingExtensionsCrashDump nastavenou na true:

<Project Sdk="MSTest.Sdk/3.10.2">

<PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>

</Project>

Seznam všech dostupných rozšíření najdete v tématu Rozšíření Microsoft.Testing.Platform.

Varování

Je důležité si projít licenční podmínky pro každé rozšíření, protože se můžou lišit.

Povolená a zakázaná rozšíření se kombinují s rozšířeními poskytovanými vybraným profilem rozšíření.

Tento vzor vlastnosti lze použít k povolení dalšího rozšíření nad implicitním Default profilem (jak je vidět v předchozím příkladu CrashDumpExtension).

Můžete také zakázat rozšíření, které pochází z vybraného profilu. Například zakažte MS Code Coverage rozšíření nastavením <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:

<Project Sdk="MSTest.Sdk/3.10.2">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
    </PropertyGroup>

</Project>

Funkce

Mimo výběru běžce a rozšíření specifických pro běžce poskytuje MSTest.Sdk také další funkce, které zjednodušují a vylepšují vaše zkušenosti s testováním.

Testování pomocí Aspire

Aspire je definovaný, připravený pro cloud technologický stack pro sestavování pozorovatelných, produkčně připravených distribuovaných aplikací. Aspire se dodává prostřednictvím kolekce balíčků NuGet, které řeší konkrétní problematiky nativní pro cloud. Další informace najdete v dokumentaci Aspire.

Poznámka:

Tato funkce je dostupná z MSTest.Sdk 3.4.0.

Nastavením vlastnosti EnableAspireTestingtruemůžete přenést všechny závislosti a výchozí using direktivy, které potřebujete pro testování pomocí Aspire a MSTest.

<Project Sdk="MSTest.Sdk/3.4.0">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableAspireTesting>true</EnableAspireTesting>
    </PropertyGroup>

</Project>

Test s Playwrightem

Playwright umožňuje spolehlivé kompletní testování moderních webových aplikací. Další informace naleznete v oficiální dokumentaci Playwright.

Poznámka:

Tato funkce je dostupná z MSTest.Sdk 3.4.0.

Nastavením vlastnosti EnablePlaywrighttrue můžete přenést všechny závislosti a výchozí using direktivy, které potřebujete pro testování pomocí Playwright a MSTest.

<Project Sdk="MSTest.Sdk/3.4.0">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnablePlaywright>true</EnablePlaywright>
    </PropertyGroup>

</Project>

Migrace na MSTest SDK

Zvažte následující kroky potřebné k migraci do sady MSTest SDK.

Aktualizace projektu

Při migraci existujícího testovacího projektu MSTest do sady MSTest SDK začněte nahrazením Sdk="Microsoft.NET.Sdk" položky v horní části testovacího projektu za Sdk="MSTest.Sdk"

- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"

Přidejte verzi do global.json:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.10.2"
    }
}

Pak můžete začít zjednodušit projekt.

Odebrat výchozí vlastnosti:

- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>

Odebrat výchozí odkazy na balíčky:

- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"

Nakonec můžete na základě profilu rozšíření, který používáte, odebrat také některé Microsoft.Testing.Extensions.* balíčky.

Aktualizujte své CI

Po aktualizaci projektů, pokud používáte Microsoft.Testing.Platform (výchozí) a pokud se spoléháte na dotnet test spuštění testů, musíte aktualizovat konfiguraci CI. Další informace a vysvětlení všech požadovaných změn najdete v tématu integrace testů dotnet.

Pokud používáte režim VSTest, dotnet test tady je příklad aktualizace úlohy při použití DotNetCoreCLI v Azure DevOps:

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'

Známá omezení

Sady SDK MSBuild poskytované nástrojem NuGet (včetně MSTest.Sdk) mají omezenou podporu nástrojů , pokud jde o aktualizaci jejich verze, což znamená, že obvyklá aktualizace NuGet a uživatelské rozhraní sady Visual Studio pro správu balíčků NuGet nefunguje podle očekávání. Verzi v global.json souboru a v souboru projektu budete muset aktualizovat ručně. (To platí i v případě, že používáte Dependabot z důvodu problémů dependabot-core#12824 a dependabot-core#8615.)

Viz také