Konfigurace sady MSTest SDK

Tento článek popisuje pokročilé možnosti konfigurace pro MSTest.Sdk. Pro základní nastavení a začátek se podívejte na Get started with MSTest.

Důležité

Ve výchozím nastavení používá MSTest.Sdk spouštěč MSTest s MTP, včetně testu dotnet. To vyžaduje úpravu volání CI a místního rozhraní příkazového řádku a má vliv také na dostupné položky .runsettings. Staré integrace a nástroje můžete zachovat přepnutím na VSTest.

MsTest.Sdk ve výchozím nastavení nastaví EnableMSTestRunner i TestingPlatformDotnetTestSupport na hodnotu true. Další informace o testu dotnet a jeho různých režimech naleznete v tématu Testování pomocí testu dotnet.

Pomocné knihovny testovacího nástroje

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

Vyberte běžce

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

Rozšíření MTP

Prostředí MTP můžete přizpůsobit prostřednictvím sady rozšíření balíčků NuGet. Pro zjednodušení a zlepšení tohoto prostředí sada MSTest SDK zavádí dvě funkce:

Profil Microsoft.Testing.Platform

Koncept profiles umožňuje vybrat výchozí sadu konfigurací a rozšíření, která se použijí na testovací project.

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/4.1.0">

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

</Project>
Rozšíření/profil Žádný Výchozí AllMicrosoft
Pokrytí kódu ✔️ ✔️
výpis chyb ✔️
Falzifikáty ✔️¹
Výpis z přerušení ✔️
Opětovné načítání za provozu ✔️
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/4.1.0">

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

</Project>

Seznam všech dostupných rozšíření najdete v tématu Funkce MTP.

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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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í s využitím Aspire

Aspire je vyhraněný technologický stack připravený pro cloud určený k vytváření pozorovatelných, pro produkci připravených a distribuovaných aplikací. Aspire se dodává prostřednictvím kolekce balíčků NuGet, které zpracovávají konkrétní záležitosti určené pro cloud. Další informace najdete v Aspire dokumentaci.

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/4.1.0">

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

</Project>

Test s Playwrightem

Playwright umožňuje spolehlivé komplexní testování pro moderní web apps. 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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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 project

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

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

Přidejte verzi do global.json:

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

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

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 na základě profilu rozšíření, který používáte, můžete některé balíčky Microsoft.Testing.Extensions.* odebrat.

Aktualizujte své CI

Po aktualizaci projektů, pokud používáte MTP (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 při použití úlohy 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í

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

Viz také