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.Sdk
uruchamiają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 MSTest
true
.
<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"'