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

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

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

</Project>

Uwaga

/3.3.1 parametr jest podany jako przykład jako pierwsza wersja zestawu SDK, ale 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.3.1"
    }
}

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:

  • Default — włącza zalecane rozszerzenia dla tej wersji zestawu MSTest.SDK. Jest to ustawienie domyślne, gdy właściwość nie jest ustawiana jawnie.
  • None — Nie włączono rozszerzeń.
  • AllMicrosoft — Włącz wszystkie rozszerzenia dostarczane przez firmę Microsoft (w tym rozszerzenia z restrykcyjną licencją).

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

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

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

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

</Project>

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

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

    <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 using potrzebne do testowania za pomocą Playwright elementów i MSTesttrue .

<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.3.1"
    }
}

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"'

Zobacz też