Udostępnij za pośrednictwem


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 zapewniania najwyższej klasy środowiska do testowania za pomocą biblioteki MSTest.
  • Zalecany cel dla większości użytkowników.
  • Łatwe konfigurowanie dla innych użytkowników.

Zestaw MSTest SDK odnajduje i uruchamia testy przy użyciu modułu uruchamiającego testy MSTest.

Możesz włączyć MSTest.Sdk w projekcie, aktualizując Sdk atrybut Project węzła projektu:

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

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

    <!-- references to the code to test -->

</Project>

Uwaga

/3.6.3 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>

    <!-- references to the code to test -->

</Project>

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

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

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

build W przypadku projektu wszystkie potrzebne składniki są przywracane i instalowane przy użyciu standardowego przepływu pracy NuGet ustawionego przez projekt.

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 element , możesz wyrazić zgodę na korzystanie z modułu MSTest.Sdkuruchamiającego testy MSTest, w tym z testem dotnet. Wymaga to zmodyfikowania wywołań ciągłej integracji i lokalnego interfejsu wiersza polecenia, a także wpływa na dostępne wpisy .runsettings. Możesz użyć MSTest.Sdk funkcji i nadal zachować stare integracje i narzędzia, przełączając moduł uruchamiający.

Wybierz moduł uruchamiający

Domyślnie zestaw MSTest SDK korzysta z modułu uruchamiającego MSTest, ale możesz przełączyć się na narzędzie VSTest , dodając właściwość <UseVSTest>true</UseVSTest>.

Rozszerzanie modułu uruchamiającego MSTest

Środowisko można dostosować MSTest runner za pomocą zestawu rozszerzeń pakietów NuGet. Aby uprościć i ulepszyć to środowisko, zestaw MSTest SDK wprowadza dwie funkcje:

Profil modułu uruchamiającego MSTest

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 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>
Rozszerzenie/profil Żaden Domyślny WszystkieMicrosoft
pokrycie kodu ✔️ ✔️
zrzut awaryjny ✔️
Fałszywki ✔️ (MSTest.Sdk 3.7.0+)
zrzut zawieszania ✔️
przeładowywanie na gorąco ✔️
ponów próbę ✔️
Trx ✔️ ✔️

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.6.3">

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

<!-- references to the code to test -->

</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ć.

Rozszerzenia włączone i wyłączone są łączone z rozszerzeniami dostarczonymi przez wybrany profil rozszerzenia.

Ten wzorzec właściwości może służyć do włączenia dodatkowego rozszerzenia na podstawie niejawnego Default profilu (jak pokazano w poprzednim przykładzie 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.6.3">

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

    <!-- references to the code to test -->

</Project>

Funkcje

Poza wyborem rozszerzeń specyficznych MSTest.Sdk dla modułu uruchamiającego i modułu uruchamiającego dostępne są również dodatkowe funkcje upraszczające i ulepszające środowisko testowania.

Testowanie za pomocą platformy .NET Aspire

Platforma .NET Aspire jest opinionowanym, gotowym do chmury stosem do tworzenia obserwowalnych, gotowych do produkcji aplikacji rozproszonych. Platforma .NET Aspire jest dostarczana za pośrednictwem kolekcji pakietów NuGet, które obsługują konkretne problemy natywne dla chmury. Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET Aspire.

Uwaga

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

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

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

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

    <!-- references to the code to test -->

</Project>

Testowanie za pomocą dramaturga

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 wartość , możesz wprowadzić wszystkie zależności i dyrektywy domyślne true potrzebne do testowania za pomocą using elementów i PlaywrightMSTest .

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

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

    <!-- references to the code to test -->

</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.6.3"
    }
}

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.* .

Aktualizowanie ciągłej integracji

Po zaktualizowaniu projektów, jeśli używasz MSTest runner (ustawienie domyślne), a jeśli korzystasz z dotnet test testów, musisz zaktualizować konfigurację ciągłej integracji. Aby uzyskać więcej informacji i poznać wszystkie wymagane zmiany, zobacz dotnet test integration (Integracja z testem dotnet).

Oto przykładowa aktualizacja podczas korzystania z DotNetCoreCLI zadania w usłudze 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"'

Znane ograniczenia

Zestawy SDK MSBuild dostarczone przez NuGet (w tym MSTest.Sdk) mają ograniczoną obsługę narzędzi przy aktualizacji jego wersji, co oznacza, że zwykła aktualizacja NuGet i interfejs użytkownika programu Visual Studio do zarządzania pakietami NuGet nie działają tak, jak oczekiwano. Aby uzyskać więcej informacji, zobacz tę kwestię: NuGet#13127.

Uwaga

To ograniczenie nie jest specyficzne dla zestawu MSTest SDK, ale dla zestawu SDK MSBuild dostarczonego przez pakiet NuGet. Dependabot będzie obsługiwać aktualizowanie wersji w pliku global.json, ale należy ręcznie zaktualizować wersję w pliku projektu.

Zobacz też