Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wskazówka
Przed wybraniem konfiguracji modułu uruchamiającego zobacz Omówienie platform testowych.
Istnieje kilka sposobów uruchamiania testów MSTest w zależności od potrzeb. Testy można uruchamiać z poziomu środowiska IDE (na przykład Visual Studio, Visual Studio Code lub JetBrains Rider), z wiersza polecenia, lub z usługi ciągłej integracji (na przykład GitHub Actions lub Azure DevOps).
W przeszłości narzędzie MSTest polegało na VSTest do uruchamiania testów we wszystkich kontekstach, ale począwszy od wersji 3.2.0, narzędzie MSTest ma własny moduł uruchamiający testy. Ten nowy uruchamiacz jest lżejszy i szybszy niż VSTest i jest to zalecany sposób uruchamiania testów MSTest.
VSTest vs MTP
Narzędzie MSTest obsługuje uruchamianie testów zarówno z narzędziami VSTest i Microsoft.Testing.Platform (MTP). Obsługę MTP umożliwia moduł uruchamiający MSTest, który może uruchamiać testy w różnych kontekstach (na przykład w pipeline'ach ciągłej integracji (CI), CLI, Exploratorem testów Visual Studio oraz Exploratorem testów programu VS Code). Moduł uruchamiający MSTest jest osadzony bezpośrednio w projektach testowych MSTest i nie ma żadnych innych zależności aplikacji, takich jak vstest.console lub dotnet test, wymaganych do uruchamiania testów. Jednak nadal można uruchamiać testy przy użyciu polecenia dotnet test.
Moduł uruchamiający MSTest jest open source i opiera się na bibliotece MTP. Kod Microsoft.Testing.Platform można znaleźć w repozytorium microsoft/testfx GitHub. Moduł uruchamiający MSTest jest dostarczany z pakietem MSTest in 3.2.0 lub nowszym.
W pakiecie SDK platformy .NET 10 i nowszych wybierz dedykowany tryb MTP dla dotnet test w global.json. Począwszy od .NET 11 (wersja zapoznawcza 6), można zastąpić ten wybór dla bieżącego procesu zmienną środowiskowąDOTNET_TEST_RUNNER. Informacje o obsługiwanych wejściach, wymaganiach dotyczących wersji pakietu SDK oraz opcjach specyficznych dla protokołu MTP można znaleźć w sekcji dotnet testz protokołem MTP.
Programistyczne odnajdywanie i wykonywanie testów
W przypadku niestandardowego interfejsu użytkownika testu, usługi integration-test lub generatora raportów wybierz interfejs zgodny z platformą testową:
| Requirement | Interfejs | Szczegóły |
|---|---|---|
| Odkrywaj i uruchamiaj testy MTP z kodu .NET z metadanymi i wynikami na żywo. | Klient trybu serwera MTP | Począwszy od MTP 2.4, Microsoft.Testing.Platform.ServerMode.Client.Sources zapewnia typizowane metody odnajdywania i wykonywania. Pakiet wstrzykuje wewnętrzne typy języka C#; inne języki .NET mogą wywoływać wrapper języka C#. |
| Odkrywaj testy MTP za pomocą wiersza polecenia i korzystaj z uporządkowanych metadanych. | --list-tests json |
Dostępne w wersji 2.3 lub nowszej MTP. Przeczytaj dokument JSON, a następnie uruchom wybrane testy przy użyciu --filter-uid. Format tekstu nie jest interfejsem API czytelnym dla komputera. |
| Zachowaj istniejącą integrację odnajdywania i wykonywania programu VSTest. | Microsoft.TestPlatform.TranslationLayer |
Użyj VsTestConsoleWrapper z vstest.console i zgodnym adapterem VSTest. Opakowanie obsługuje protokół VSTest, a nie natywny protokół MTP. |
| Przetwarzaj metadane testów lub twórz niestandardowe raporty wewnątrz procesu testowania. | Rozszerzenia MTP | Zaimplementuj element IDataConsumer, aby odbierać komunikaty publikowane przez framework testowy. Ten punkt rozszerzenia nie jest zewnętrznym interfejsem API klienta testowego. |
Protokół MTP obsługuje odnajdywanie, a także uruchamianie. Nie musisz analizować wyjścia terminala ani tworzyć opakowania Process.Start, aby korzystać z klienta działającego w trybie serwera. Aby zapoznać się z kompletnym przykładem języka C# i wywołaniem w języku Visual Basic, zobacz Odnajdywanie i uruchamianie testów z platformy .NET.
Odnajdywanie może obejmować kategorie MSTest i niestandardowe TestProperty metadane. Dostępne pola zależą od frameworku i transportu; żaden interfejs API nie serializuje każdej dowolnej właściwości w pamięci. Zobacz Pobieranie aktualizacji i metadanych.
W przypadku istniejącej VsTestConsoleWrapper integracji zachowaj konfigurację projektu i adapter zgodne z programem VSTest do momentu migracji klienta. Zgodność frameworka z VSTest nie sprawia, że warstwa tłumaczenia VSTest jest klientem dla każdej aplikacji testowej MTP. Aby uzyskać informacje o zakresie warstwy zgodności, zobacz VSTest Bridge.
Włączanie protokołu MTP w projekcie MSTest
Użyj zestawu MSTest SDK , aby znacznie uprościć konfigurację projektu, zarządzanie wersjami i dostosowanie protokołu MTP i jego rozszerzeń.
MSTest.Sdk zastępuje Microsoft.NET.Sdk jako pakiet SDK projektu, a MTP jest domyślnie włączone:
<Project Sdk="MSTest.Sdk/4.1.0">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Uwaga / Notatka
MSTest.Sdk działa tylko wtedy, gdy projekt może używać Microsoft.NET.Sdk jako bazowego pakietu SDK. Jeśli project wymaga innego zestawu SDK, nie zastąp <Project Sdk="..."> wartości wartością MSTest.Sdk.
Na przykład niektóre projekty testowe integracji ASP.NET Core używają polecenia Microsoft.NET.Sdk.Web.
MSTest.Sdk dziedziczy po Microsoft.NET.Sdk, więc nie importuje elementów docelowych zestawu SDK platformy ASP.NET Core, które udostępnia Microsoft.NET.Sdk.Web.
Możesz również ręcznie skonfigurować MSTest zamiast używać MSTest.Sdk. Ręczna konfiguracja jest wymagana, gdy projekt wymaga innego zestawu SDK najwyższego poziomu (na przykład Microsoft.NET.Sdk.Web), ale można go również wybrać przy użyciu standardu Microsoft.NET.Sdk.
EnableMSTestRunner Dodaj właściwość i ustaw wartość OutputType na Exe w pliku projektu. Następnie dodaj odwołania MSTest wymagane przez projekt. Upewnij się, że używasz narzędzia MSTest 3.2.0 lub nowszego, a następnie zaktualizuj do najnowszej dostępnej wersji MSTest.
Rozważmy następujący przykładowy plik project:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable Microsoft.Testing.Platform, this is an opt-in feature -->
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<!--
Displays error on console in addition to the log file. Note that this feature comes with a performance impact.
For more information, visit https://learn.microsoft.com/dotnet/core/testing/unit-testing-with-dotnet-test#show-failure-per-test
-->
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<!--
MSTest meta package is the recommended way to reference MSTest.
It's equivalent to referencing:
Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework
MSTest.Analyzers
Starting with 3.8, it also includes:
Microsoft.Testing.Extensions.TrxReport
Microsoft.Testing.Extensions.CodeCoverage
-->
<PackageReference Include="MSTest" Version="4.1.0" />
</ItemGroup>
</Project>
Wskazówka
Aby upewnić się, że wszystkie projekty testowe w rozwiązaniu korzystają z testera MSTest, ustaw właściwość EnableMSTestRunner i TestingPlatformDotnetTestSupport w pliku Directory.Build.props zamiast pojedynczych plików projektów.
Konfiguracje i filtry
.runsettings
Protokół MTP obsługuje runsettings za pośrednictwem opcji --settings wiersza polecenia. Aby uzyskać pełną listę obsługiwanych wpisów MSTest, zobacz Konfigurowanie MSTest: Runsettings. Poniższe polecenia pokazują różne przykłady użycia.
Używając dotnet run:
dotnet run --project Contoso.MyTests -- --settings config.runsettings
Używając dotnet exec:
dotnet exec Contoso.MyTests.dll --settings config.runsettings
— lub —
dotnet Contoso.MyTests.dll --settings config.runsettings
Przy użyciu pliku wykonywalnego:
Contoso.MyTests.exe --settings config.runsettings
Filtr testów
Można filtrować testy bezproblemowo, używając opcji wiersza polecenia filter--filter. W poniższych poleceniach przedstawiono kilka przykładów.
Używając dotnet run:
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Używając dotnet exec:
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
— lub —
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Przy użyciu pliku wykonywalnego:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
Zobacz także
- Uruchamianie testów MSTest w Azure Pipelines
-
Testowanie za pomocą polecenia
dotnet test -
dotnet testz MTP -
dotnet testz narzędziem VSTest - Opcje interfejsu wiersza polecenia MTP - zestawienie
- Tryb serwera MTP
- Testowanie aplikacji platformy UWP i WinUI 3 przy użyciu bibliotek MSTest i MTP
- Testuj aplikacje klasyczne systemu Windows przy użyciu MSTest automatyzacja interfejsu użytkownika
- Testy filtra
- Zamawianie testów jednostkowych