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.
Sada MSTest SDK zjišťuje a spouští testy pomocí msTest runneru.
V projektu můžete povolit MSTest.Sdk
jednoduše aktualizaci Sdk
atributu Project
uzlu projektu:
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Poznámka:
/3.6.3
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>
<!-- references to the code to test -->
</Project>
Potom zadejte MSTest.Sdk
verzi v souboru global.json následujícím způsobem:
{
"msbuild-sdks": {
"MSTest.Sdk": "3.6.3"
}
}
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
, můžete se přihlásit k použití MSTest runner, včetně s dotnet test. To vyžaduje úpravu volání CI a místního rozhraní příkazového řádku a také ovlivňuje dostupné položky .runsettings. Staré integrace a nástroje můžete používat MSTest.Sdk
a přesto zachovat tak, že místo toho přepnete spouštěč.
Výběr spouštěče
Sada MSTest SDK ve výchozím nastavení spoléhá na msTest runner, ale můžete přepnout na VSTest přidáním vlastnosti <UseVSTest>true</UseVSTest>
.
Rozšíření msTest runneru
Prostředí můžete přizpůsobit MSTest runner
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 msTest runneru
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ů:
None
– Nejsou povolena žádná rozšíření.Default
– Povolí doporučená rozšíření pro tuto verzi MSTest.SDK. Toto je výchozí nastavení, pokud vlastnost není explicitně nastavena.Povolí následující rozšíření:
AllMicrosoft
– Povolí všechna rozšíření dodávaná Microsoftem (včetně rozšíření s omezující licencí).Povolí následující rozšíření:
Fakes (MSTest.Sdk 3.7.0+)
sestavy trx
Tady je úplný příklad použití None
profilu:
<Project Sdk="MSTest.Sdk/3.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TestingExtensionsProfile>None</TestingExtensionsProfile>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Rozšíření/profil | Žádný | Výchozí | AllMicrosoft |
---|---|---|---|
Pokrytí Kódu | ✔️ | ✔️ | |
výpis pádu | ✔️ | ||
Fakes | ✔️ (MSTest.Sdk 3.7.0+) | ||
Záznam stavu při zamrznutí | ✔️ | ||
"Opětovné načítání" ("Hot Reload") | ✔️ | ||
Opakování | ✔️ | ||
Trx | ✔️ | ✔️ |
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.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Seznam všech dostupných rozšíření najdete v tématu Rozšíření Microsoft.Testing.Platform.
Upozorňující
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.6.3">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
</PropertyGroup>
<!-- references to the code to test -->
</Project>
Funkce
Mimo výběr rozšíření specifického pro spouštěče a spouštěče poskytuje také další funkce pro MSTest.Sdk
zjednodušení a vylepšení prostředí pro testování.
Testování s využitím .NET Aspire
.NET Aspire je názorný, cloudově připravený zásobník pro sestavování pozorovatelných, připravených produkčních distribuovaných aplikací. .NET Aspire se dodává prostřednictvím kolekce balíčků NuGet, které zpracovávají konkrétní aspekty nativní pro cloud. Další informace najdete v dokumentaci k .NET Aspire.
Poznámka:
Tato funkce je k dispozici v MSTest.Sdk 3.4.0.
Nastavením vlastnosti EnableAspireTesting
true
můž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>
<!-- references to the code to test -->
</Project>
Testování pomocí playwrightu
Playwright umožňuje spolehlivé kompletní testování moderních webových aplikací. Další informace najdete v oficiální dokumentaci k playwrightům.
Poznámka:
Tato funkce je k dispozici v MSTest.Sdk 3.4.0.
Nastavením vlastnosti EnablePlaywright
true
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>
<!-- references to the code to test -->
</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.6.3"
}
}
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 na základě profilu rozšíření, který používáte, můžete také některé balíčky odebrat Microsoft.Testing.Extensions.*
.
Aktualizace CI
Po aktualizaci projektů, pokud používáte MSTest runner
(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.
Tady je příklad aktualizace při použití DotNetCoreCLI
úlohy v Azure DevOps:
\- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '**/**.sln'
- arguments: '--configuration Release'
+ arguments: '--configuration Release -p:TestingPlatformCommandLineArguments="--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 jeho 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í. Další podrobnosti najdete v tomto hlášení: NuGet#13127.
Poznámka:
Toto omezení není specifické pro sadu MSTest SDK, ale pro všechny sady MSBuild SDK poskytované nástrojem NuGet.
Dependabot bude zpracovávat aktualizaci verze v souboru global.json
, ale budete muset ručně aktualizovat verzi v souboru projektu.