Udostępnij za pośrednictwem


Omówienie platform testowych dla .NET

W .NET, framework testowy i platforma testowa to różne składniki, które współpracują ze sobą w celu odnajdywania i uruchamiania testów.

  • Platforma testowa definiuje model testowy, względem którego piszesz, na przykład MSTest, NUnit, xUnit.net lub TUnit.
  • Platforma testowa uruchamia testy, integruje się z środowiskami IDE i interfejsem wiersza polecenia oraz udostępnia współużytkowane punkty rozszerzenia.

Możesz wybrać między dwiema platformami testowymi:

  • VSTest
  • Microsoft.Testing.Platform (MTP)

Wskazówka

Aby uzyskać najprostszą konfigurację, wybierz jedną platformę dla repozytorium i skonfiguruj projekty testowe, ciągłą integrację i narzędzia spójne dla tej platformy. Nie mieszaj projektów testowych opartych na programie VSTest i Microsoft.Testing.Platform .NET w tej samej konfiguracji rozwiązania lub uruchamiania, ponieważ ten scenariusz nie jest obsługiwany. Jeśli uruchomisz również testy inne niż .NET, które zależą od testów VSTest (na przykład C++ lub JavaScript), uruchom te testy w oddzielnych konfiguracjach od testów .NET opartych na protokole MTP.

Jak wybrać platformę

Skorzystaj z poniższych scenariuszy, aby szybko wybrać.

Przypadek użycia Wybierz Dlaczego
Potrzebujesz scenariuszy testów wykonywanych przy użyciu Native AOT lub scenariuszy związanych z optymalizacją kodu (trimming). Microsoft.Testing.Platform Protokół MTP obsługuje te nowoczesne scenariusze wdrażania, a program VSTest nie.
Kompilujesz spakowane projekty testowe WinUI lub UWP. VSTest Te typy projektów nie są obecnie obsługiwane przez MTP.
Należy mieszać testy .NET i adaptery testowe inne niż .NET (na przykład adaptery JavaScript lub C++). VSTest Program VSTest obsługuje scenariusze adapterów wielojęzycznych, podczas gdy protokół MTP jest specyficzny dla .NET.
Chcesz, aby projekty testowe zachowywały się jak zwykłe pliki wykonywalne (bezpośrednie uruchamianie plików wykonywalnych, i przepływy F5 projektu startowego). Microsoft.Testing.Platform MTP jest wykonywalny w pierwszej kolejności, dlatego aplikacje testowe działają jak standardowe aplikacje .NET w lokalnych i CI przepływach pracy.
Polegasz na utrwalonych integracjach z istniejącymi narzędziami. VSTest Program VSTest ma najdłuższy rekord śledzenia zgodności w istniejących produktach, zadaniach i potokach. Obsługa MTP rośnie w ekosystemie, ale niektóre integracje mogą pozostawać w tyle za VSTest.
Wolisz ścisłe wartości domyślne i jawne zachowanie. Microsoft.Testing.Platform MTP faworyzuje deterministyczne wykonywanie z lekkim modelem rozszerzeń typu opt-in i rejestracją w czasie budowy. Na przykład może zawieść, gdy nie są uruchamiane żadne testy, zmniejszyć zmienność zależną od środowiska i umożliwić wyłączenie poszczególnych rozszerzeń dla każdego środowiska.
Preferujesz bardziej miękkie, szerokie domyślne ustawienia zgodne z poprzednimi wersjami. VSTest Obie platformy dbają o zgodność z poprzednimi wersjami. Program VSTest ustala priorytety domyślnych ustawień zorientowanych na zgodność dla różnych, istniejących toolchainów, podczas gdy MTP zapewnia zgodność wsteczną w ramach własnego modelu rozszerzeń.
Jesteś zablokowany z powodu problemu lub zachowania specyficznego dla narzędzia VSTest w bieżącym przepływie pracy. Microsoft.Testing.Platform W wielu scenariuszach ten sam przepływ pracy nie ma wpływu na przeniesienie do MTP z powodu różnic w modelu środowiska uruchomieniowego i architekturze rozszerzenia.

Jeśli konkretny przypadek użycia nie znajduje się na liście, obie platformy są prawidłowymi opcjami.

Obsługa integracji i narzędzi

Obszar integracji VSTest Microsoft.Testing.Platform
Integracja środowiska IDE Dojrzała integracja w obrębie Visual Studio i innych narzędzi, które zależą od protokołu VSTest i adapterów. Obsługiwane w scenariuszach Visual Studio i Visual Studio Code z ciągłą integracją w częściach ekosystemu.
CI i narzędzia zewnętrzne Szerokie wsparcie dla narzędzi i zadań zarówno firmy Microsoft, jak i innych firm. W Azure DevOps można użyć zadania VSTest (VSTest@3, vstest.console) lub zadania .NET (DotNetCoreCLI@2, dotnet test). Działa w przepływach pracy ciągłej integracji i nowoczesnych przepływów pracy .NET, ale niektóre integracje innych firm mogą nadal być słabsze w porównaniu do narzędzia VSTest. W Azure DevOps użyj zadania .NET (DotNetCoreCLI@2, dotnet test).
Zachowanie Domyślny tryb VSTest. Mają zastosowanie argumenty i zachowanie narzędzia VSTest. Natywny tryb MTP jest dostępny w .NET 10 SDK i nowszych wersjach.

Aby uzyskać szczegółowe informacje na temat trybów i argumentów , zobacz Testowanie .

Rozpoczynanie od platformy testowej

W przypadku wybrania narzędzia VSTest

  • MSTest: uruchamianie testów za pomocą narzędzia MSTest
  • NUnit: NUnit i Microsoft.Testing.Platform
  • xUnit.net: wprowadzenie do xUnit.net
  • TUnit: nieobsługiwane przez VSTest. Użyj Microsoft.Testing.Platform.

Jeśli wybierzesz Microsoft.Testing.Platform

  • MSTest: uruchamianie testów za pomocą narzędzia MSTest
  • NUnit: Obsługa platformy Microsoft.Testing.Platform w NUnit (NUnit runner)
  • xUnit.net: Microsoft Testing Platform (xUnit.net v3)
  • TUnit: dokumentacja narzędzia TUnit

Dalsze kroki

  • Omówienie pojęć dotyczących protokołu MTP: Microsoft.Testing.Platform — omówienie
  • Omówienie opcji VSTest: opcje vsTest
  • Migrowanie z programu VSTest: migrowanie z programu VSTest do witryny Microsoft.Testing.Platform
  • Dodawanie możliwości: Funkcje Microsoft.Testing.Platform