Udostępnij za pomocą


Omówienie zestawu MSTest SDK

MSTest.Sdk to zestaw SDK projektu MSBuild do tworzenia aplikacji MSTest. Można utworzyć aplikację MSTest bez tego zestawu SDK, jednak zestaw MSTest SDK to:

  • Dostosowane do zapewnienia wyjątkowego doświadczenia testowania za pomocą MSTest.
  • Zalecany cel dla większości użytkowników.
  • Łatwe konfigurowanie dla innych użytkowników.

Domyślnie zestaw MSTest SDK odnajduje i uruchamia testy przy użyciu modułu uruchamiającego testy MSTest dla biblioteki Microsoft.Testing.Platform. Możesz przełączyć się na użycie narzędzia VSTest, określając <UseVSTest>true</UseVSTest>

Możesz włączyć MSTest.Sdk w projekcie, po prostu aktualizując atrybut Sdk w węźle Project projektu:

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

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

</Project>

Uwaga

/3.10.2 jest podany jako przykład i można go zastąpić dowolną nowszą wersją.

Aby uprościć obsługę wersji, zalecamy ustawienie wersji zestawu SDK na poziomie rozwiązania przy użyciu pliku global.json . Na przykład plik projektu wygląda następująco:

<Project Sdk="MSTest.Sdk">

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

</Project>

Następnie określ wersję w pliku MSTest.Sdk w następujący sposób:

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

Aby uzyskać więcej informacji, zobacz Use MSBuild project SDK (Używanie zestawów SDK projektu MSBuild).

Kiedy uruchomisz projekt, wszystkie potrzebne komponenty są przywracane i instalowane przy użyciu standardowego przepływu pracy NuGet ustawionego dla projektu.

Nie potrzebujesz niczego innego, aby skompilować i uruchomić testy. Możesz użyć tego samego narzędzia (na przykład dotnet test lub programu Visual Studio) używanego przez "klasyczny" projekt MSTest.

Ważne

Przełączając się na MSTest.Sdk, wyrażasz zgodę na korzystanie z narzędzia do uruchamiania testów MSTest (umożliwia Microsoft.Testing.Platform dla MSTest), w tym z dotnet test. To wymaga zmodyfikowania wywołań CI i lokalnego CLI, a także wpływa na dostępne wpisy w .runsettings. Możesz użyć MSTest.Sdk i nadal zachować stare integracje i narzędzia, przełączając uruchamiacz. Domyślnie, MSTest.Sdk ustawia EnableMSTestRunner i TestingPlatformDotnetTestSupport na true. Aby uzyskać więcej informacji na temat testu dotnet i jego różnych trybów uruchamiania Microsoft.Testing.Platform, zobacz Testowanie przy użyciu testu dotnet.

Testowanie bibliotek pomocnika narzędzi

Jeśli projekt korzystający z zestawu MSTest.Sdk ma być biblioteką pomocnika narzędzi testowych i nie zawiera żadnych testów możliwych do uruchomienia, projekt powinien mieć wartość <IsTestApplication>false</IsTestApplication>.

Wybierz biegacza

Domyślnie zestaw MSTest SDK korzysta z Microsoft.Testing.Platform, ale możesz przełączyć się na VSTest, dodając właściwość <UseVSTest>true</UseVSTest>.

Rozszerzanie Microsoft.Testing.Platform

Możesz dostosować Microsoft.Testing.Platform środowisko za pomocą zestawu rozszerzeń pakietów NuGet. Aby uprościć i ulepszyć to środowisko, zestaw MSTest SDK wprowadza dwie funkcje:

Microsoft.Testing.Platform — profil

Koncepcja profilów umożliwia wybranie domyślnego zestawu konfiguracji i rozszerzeń, które zostaną zastosowane do projektu testowego.

Profil można ustawić przy użyciu właściwości TestingExtensionsProfile z jednym z następujących trzech profilów:

Oto pełny przykład użycia profilu None:

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

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

</Project>
Rozszerzenie/profil Żaden Domyślny WszystkieMicrosoft
pokrycie kodu ✔️ ✔️
zrzut awaryjny ✔️
Fałszywki ✔️¹
zrzut pamięci zawieszonego programu ✔️
Przeładowywanie na gorąco ✔️
ponów próbę ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

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

Włączanie lub wyłączanie rozszerzeń

Rozszerzenia można włączać i wyłączać przez właściwości programu MSBuild za pomocą wzorca Enable[NugetPackageNameWithoutDots].

Aby na przykład włączyć rozszerzenie zrzutu awaryjnego (pakiet NuGet Microsoft.Testing.Extensions.CrashDump), możesz użyć następującej właściwości EnableMicrosoftTestingExtensionsCrashDump ustawionej na:true

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

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

</Project>

Aby uzyskać listę wszystkich dostępnych rozszerzeń, zobacz Microsoft.Testing.Platform extensions (Rozszerzenia Microsoft.Testing.Platform).

Ostrzeżenie

Ważne jest, aby przejrzeć postanowienia licencyjne dla każdego rozszerzenia, ponieważ mogą się one różnić.

Włączone i wyłączone rozszerzenia są łączone z rozszerzeniami dostarczonymi przez wybrany profil rozszerzeń.

Ten wzorzec właściwości może służyć do włączenia dodatkowego rozszerzenia na bazie niejawnego Default profilu (jak pokazano w poprzednim przykładzie rozszerzenia CrashDumpExtension).

Możesz również wyłączyć rozszerzenie pochodzące z wybranego profilu. Na przykład wyłącz MS Code Coverage rozszerzenie, ustawiając wartość <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:

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

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

</Project>

Funkcje

Poza wyborem modułu uruchamiającego oraz specyficznych dla niego rozszerzeń, MSTest.Sdk oferuje również dodatkowe funkcje upraszczające i ulepszające Twoje środowisko testowe.

Testowanie za pomocą programu Aspire

Aspire jest z określoną wizją, przystosowanym do chmury stosem do budowy obserwowalnych, przeznaczonych do zastosowania produkcyjnego aplikacji rozproszonych. Aspire jest dostarczane za pośrednictwem kolekcji pakietów NuGet, które obsługują konkretne aspekty chmurowe. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Aspire.

Uwaga

Ta funkcja jest dostępna w zestawie MSTest.Sdk 3.4.0.

Ustawiając właściwość EnableAspireTesting na true, można wprowadzić wszystkie zależności i domyślne dyrektywy using potrzebne do testowania wraz z Aspire i MSTest.

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

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

</Project>

Testowanie z Playwright

Playwright umożliwia niezawodne kompleksowe testowanie nowoczesnych aplikacji internetowych. Aby uzyskać więcej informacji, zobacz oficjalną dokumentację dramaturga.

Uwaga

Ta funkcja jest dostępna w zestawie MSTest.Sdk 3.4.0.

Ustawiając właściwość EnablePlaywright na true, możesz wprowadzić wszystkie zależności i domyślne dyrektywy potrzebne do testowania za pomocą using i Playwright.

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

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

</Project>

Migrowanie do zestawu MSTest SDK

Rozważ następujące kroki, które są wymagane do przeprowadzenia migracji do zestawu MSTest SDK.

Aktualizowanie projektu

Podczas migrowania istniejącego projektu testowego MSTest do zestawu MSTest SDK zacznij od zastąpienia Sdk="Microsoft.NET.Sdk" wpisu w górnej części projektu testowego ciągiem Sdk="MSTest.Sdk"

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

Dodaj wersję do pliku global.json:

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

Następnie możesz zacząć upraszczać projekt.

Usuń właściwości domyślne:

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

Usuń odwołania do pakietów domyślnych:

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

Na koniec na podstawie używanego profilu rozszerzeń możesz również usunąć niektóre pakiety Microsoft.Testing.Extensions.* .

Zaktualizuj swoją ciągłą integrację

Po zaktualizowaniu projektów, jeśli używasz Microsoft.Testing.Platform (ustawienie domyślne) i polegasz na dotnet test do uruchamiania swoich testów, musisz zaktualizować konfigurację ciągłej integracji. Aby uzyskać więcej informacji i poznać wszystkie wymagane zmiany, zobacz sekcję dotnet test integration.

Jeśli używasz trybu VSTest usługi dotnet test, oto przykład aktualizacji przy użyciu zadania DotNetCoreCLI w usłudze Azure DevOps:

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

Znane ograniczenia

Zestawy SDK msBuild dostarczone przez pakiet NuGet (w tym MSTest.Sdk) mają ograniczoną obsługę narzędzi , jeśli chodzi o aktualizowanie ich wersji, co oznacza, że zwykła aktualizacja NuGet i interfejs użytkownika programu Visual Studio do zarządzania pakietami NuGet nie działają zgodnie z oczekiwaniami. Należy ręcznie zaktualizować wersję w pliku global.json oraz w pliku projektu. (Dotyczy to nawet sytuacji, gdy używasz narzędzia Dependabot z powodu problemów dependabot-core#12824 i dependabot-core#8615).

Zobacz też